summaryrefslogtreecommitdiff
path: root/plugins/perl
diff options
context:
space:
mode:
authorjamesrtnz <jamesrt@gmail.com>2025-01-24 08:24:43 +1300
committerGitHub <noreply@github.com>2025-01-23 20:24:43 +0100
commit9a0e22c184f4348b4bda4cd3de306d65eb541341 (patch)
tree0fb4d95e57a100fd5fc31ac6238125117a59acc6 /plugins/perl
parent501f29f90c67bfb47506715c894e710c46ae3e0e (diff)
downloadzsh-9a0e22c184f4348b4bda4cd3de306d65eb541341.tar.gz
zsh-9a0e22c184f4348b4bda4cd3de306d65eb541341.tar.bz2
zsh-9a0e22c184f4348b4bda4cd3de306d65eb541341.zip
feat(perl): add `perlbrew` auto activation (#12814)
Co-authored-by: Carlo Sala <carlosalag@protonmail.com>
Diffstat (limited to 'plugins/perl')
-rw-r--r--plugins/perl/README.md40
-rw-r--r--plugins/perl/perl.plugin.zsh9
2 files changed, 32 insertions, 17 deletions
diff --git a/plugins/perl/README.md b/plugins/perl/README.md
index dd9b7dc75..a387455c1 100644
--- a/plugins/perl/README.md
+++ b/plugins/perl/README.md
@@ -8,30 +8,36 @@ To use it, add `perl` to the plugins array in your zshrc file:
plugins=(... perl)
```
+## Perlbrew activation
+
+If the plugin detects that `perlbrew` hasn't been activated, yet there is an installation of it in
+`$PERLBREW_ROOT`, it'll initialize by default. To avoid this behaviour, set `ZSH_PERLBREW_ACTIVATE=false`
+before `source oh-my-zsh.sh` in your zshrc.
+
## Aliases
-| Aliases | Command | Description |
-| :------------ | :----------------- | :------------------------------------- |
-| pbi | `perlbrew install` | Install specific perl version |
-| pbl | `perlbrew list` | List all perl version installed |
-| pbo | `perlbrew off` | Go back to the system perl |
-| pbs | `perlbrew switch` | Turn it back on |
-| pbu | `perlbrew use` | Use specific version of perl |
-| pd | `perldoc` | Show the perl documentation |
-| ple | `perl -wlne` | Use perl like awk/sed |
-| latest-perl | `curl ...` | Show the latest stable release of Perl |
+| Aliases | Command | Description |
+| :---------- | :----------------- | :------------------------------------- |
+| pbi | `perlbrew install` | Install specific perl version |
+| pbl | `perlbrew list` | List all perl version installed |
+| pbo | `perlbrew off` | Go back to the system perl |
+| pbs | `perlbrew switch` | Turn it back on |
+| pbu | `perlbrew use` | Use specific version of perl |
+| pd | `perldoc` | Show the perl documentation |
+| ple | `perl -wlne` | Use perl like awk/sed |
+| latest-perl | `curl ...` | Show the latest stable release of Perl |
## Functions
-* `newpl`: creates a basic Perl script file and opens it with $EDITOR.
+- `newpl`: creates a basic Perl script file and opens it with $EDITOR.
-* `pgs`: Perl Global Substitution: `pgs <find_pattern> <replace_pattern> <filename>`
- Looks for `<find_pattern>` and replaces it with `<replace_pattern>` in `<filename>`.
+- `pgs`: Perl Global Substitution: `pgs <find_pattern> <replace_pattern> <filename>` Looks for
+ `<find_pattern>` and replaces it with `<replace_pattern>` in `<filename>`.
-* `prep`: Perl grep, because 'grep -P' is terrible: `prep <pattern> [<filename>]`
- Lets you work with pipes or files (if no `<filename>` provided, use stdin).
+- `prep`: Perl grep, because 'grep -P' is terrible: `prep <pattern> [<filename>]` Lets you work with pipes or
+ files (if no `<filename>` provided, use stdin).
## Requirements
-In order to make this work, you will need to have perl installed.
-More info on the usage and install: https://www.perl.org/get.html
+In order to make this work, you will need to have perl installed. More info on the usage and install:
+https://www.perl.org/get.html
diff --git a/plugins/perl/perl.plugin.zsh b/plugins/perl/perl.plugin.zsh
index 678e88d97..137fa252a 100644
--- a/plugins/perl/perl.plugin.zsh
+++ b/plugins/perl/perl.plugin.zsh
@@ -54,3 +54,12 @@ pgs() { # [find] [replace] [filename]
prep() { # [pattern] [filename unless STDOUT]
perl -nle 'print if /'"$1"'/;' $2
}
+
+# If the 'perlbrew' function isn't defined, perlbrew isn't setup.
+if [[ $ZSH_PERLBREW_ACTIVATE != false ]] && (( ! $+functions[perlbrew] )); then
+ local _perlbrew="${PERLBREW_ROOT:-${HOME}/perl5/perlbrew}"
+ if [[ -f "${_perlbrew}/etc/bashrc" ]]; then
+ source "${_perlbrew}/etc/bashrc"
+ fi
+ unset _perlbrew
+fi