summaryrefslogtreecommitdiff
path: root/home/.oh-my-zsh/plugins/perl
diff options
context:
space:
mode:
authornavewindre <boneyaard@gmail.com>2025-07-13 06:42:05 +0200
committernavewindre <boneyaard@gmail.com>2025-07-13 06:42:05 +0200
commit02f14a9cb152561a5e44062aac79f3b700403b40 (patch)
tree2db8ebda3b7f6f8777783aeb5c60018e6e1359d8 /home/.oh-my-zsh/plugins/perl
parentcbbdeb2f6b40a102a829f0c47cff052937231f00 (diff)
omz
Diffstat (limited to 'home/.oh-my-zsh/plugins/perl')
-rw-r--r--home/.oh-my-zsh/plugins/perl/README.md43
-rw-r--r--home/.oh-my-zsh/plugins/perl/perl.plugin.zsh65
2 files changed, 108 insertions, 0 deletions
diff --git a/home/.oh-my-zsh/plugins/perl/README.md b/home/.oh-my-zsh/plugins/perl/README.md
new file mode 100644
index 0000000..a387455
--- /dev/null
+++ b/home/.oh-my-zsh/plugins/perl/README.md
@@ -0,0 +1,43 @@
+# Perl
+
+This plugin adds [perl](https://www.perl.org/) useful aliases/functions.
+
+To use it, add `perl` to the plugins array in your zshrc file:
+
+```zsh
+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 |
+
+## Functions
+
+- `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>`.
+
+- `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
diff --git a/home/.oh-my-zsh/plugins/perl/perl.plugin.zsh b/home/.oh-my-zsh/plugins/perl/perl.plugin.zsh
new file mode 100644
index 0000000..137fa25
--- /dev/null
+++ b/home/.oh-my-zsh/plugins/perl/perl.plugin.zsh
@@ -0,0 +1,65 @@
+# https://github.com/dbbolton
+#
+# Below are some useful Perl-related aliases/functions that I use with zsh.
+
+
+# Aliases ###################################################################
+
+# perlbrew ########
+alias pbi='perlbrew install'
+alias pbl='perlbrew list'
+alias pbo='perlbrew off'
+alias pbs='perlbrew switch'
+alias pbu='perlbrew use'
+
+# Perl ############
+
+# perldoc`
+alias pd='perldoc'
+
+# use perl like awk/sed
+alias ple='perl -wlne'
+
+# show the latest stable release of Perl
+alias latest-perl='curl -s https://www.perl.org/get.html | perl -wlne '\''if (/perl\-([\d\.]+)\.tar\.gz/) { print $1; exit;}'\'
+
+
+
+# Functions #################################################################
+
+# newpl - creates a basic Perl script file and opens it with $EDITOR
+newpl () {
+ # set $EDITOR to 'vim' if it is undefined
+ [[ -z $EDITOR ]] && EDITOR=vim
+
+ # if the file exists, just open it
+ [[ -e $1 ]] && print "$1 exists; not modifying.\n" && $EDITOR $1
+
+ # if it doesn't, make it, and open it
+ [[ ! -e $1 ]] && print '#!/usr/bin/perl'"\n"'use strict;'"\n"'use warnings;'\
+ "\n\n" > $1 && $EDITOR $1
+}
+
+
+# pgs - Perl Global Substitution
+# find pattern = 1st arg
+# replace pattern = 2nd arg
+# filename = 3rd arg
+pgs() { # [find] [replace] [filename]
+ perl -i.orig -pe 's/'"$1"'/'"$2"'/g' "$3"
+}
+
+
+# Perl grep, because 'grep -P' is terrible. Lets you work with pipes or files.
+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