1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
#compdef perl
typeset -A opt_args
_perl () {
_arguments -s \
'-0-[input record separator ($/)]:: :_perl_input_seps' \
'-a[autosplit mode with -n or -p (splits $_ into @F)]' \
'-C-[control some unicode features]: :_perl_unicode_flags' \
"-c[check syntax only (runs BEGIN and END blocks)]" \
'( -dt -d: -dt:)-d[run scripts under debugger]' \
'(-d -d: -dt:)-dt[run scripts under debugger (debugged code uses threads)]' \
'(-d -dt -dt:)-d\:-[run under control of a debugging/tracing module]:debugging/tracing module:_perl_modules --strip-prefix --perl-hierarchy=Devel' \
'(-d -dt -d: )-dt\:-[run under control of a debugging/tracing module (debugged coded uses threads)]:debugging/tracing module:_perl_modules --strip-prefix --perl-hierarchy=Devel' \
'-D-[set debugging flags]: :_perl_debugging_flags' \
'(1 -E)*-e+[run one line of program]:one line of program' \
'(1 -e)*-E+[like -e but enable all optional features]:one line of program' \
'-f[disable executing $Config{sitelib}/sitecustomize.pl at startup]' \
'-F-[split() pattern for autosplit (-a)]:split() pattern, // is optional' \
'-h[list help summary]' \
'-i-[edit <> files in place (make backup if extension supplied)]:backup file extension: ' \
'*-I-[specify @INC/#include directory (may be used more than once)]:include path:_files -/' \
'-l-[enable line ending processing, specifies line terminator]:: :_perl_output_seps' \
\*{-m,-M}"-[module.. executes \`use/no module...' before executing your script]:module:_perl_m_opt" \
"-n[assume 'while (<>) { ... }' loop around your script]" \
"-p[assume loop like -n but print line also like sed]" \
"-s[enable some switch parsing for switches after script name]" \
"-S[look for the script using PATH environment variable]" \
'( -T)-t[turn on taint checks but only issue warnings]' \
'(-t )-T[turn on taint checks]' \
"-u[dump core after parsing script]" \
"-U[allow unsafe operations]" \
"-v[print version, patchlevel and license]" \
"-V-[print perl configuration information]:configuration keys:_perl_config_vars" \
'( -W -X)-w[turn warnings on for compilation of your script (recommended)]' \
"(-w -X)-W[enable all warnings (ignores 'no warnings')]" \
"(-w -W )-X[disable all warnings (ignores 'use warnings')]" \
'-x-[ignore text before #!perl line and optionally cd to directory]:directory to cd to:_files -/' \
'1:Perl script:_files -g "*.(p[ml]|PL|t)(-.)"' \
'*::args:= _perl_normal'
}
_perl_normal() {
local expl
if [[ -z "$opt_args[(I)-(e|E)]" ]]; then
shift words
(( CURRENT-- ))
fi
_normal && ret=0
}
_perl_m_opt () {
compset -P '-'
if compset -P 1 '*='; then
_message -e module-arguments 'module arguments, comma separated'
else
_perl_modules -S= -q
fi
}
_perl_input_seps() {
if [[ $#PREFIX -eq 1 && $PREFIX != [0-9a-zA-Z] ]]; then
# convert a non-octal or potential option character into octal representation
compadd -i "$IPREFIX" -U $(( [##8] ##$PREFIX ))
else
_describe -x -t separators "input record separator, $/ in octal or hex (\0, if no argument) [\n]" '(
0:paragraph\ mode
777:slurp\ whole\ input\ files
)' || _comp_mesg=yes
fi
}
_perl_output_seps() {
if [[ $#PREFIX -eq 1 && $PREFIX != [0-9a-zA-Z] ]]; then
# convert a non-octal or potential option character into octal representation
compadd -i "$IPREFIX" -U $(( [##8] ##$PREFIX ))
else
_message -e separators "output record separator, $\\ in octal or hex [$/]"
fi
}
_perl_config_vars () {
if (( ! $+_perl_config_vars )); then
_perl_config_vars=( $(perl -MConfig -e 'print join("\n", keys %Config);') )
fi
local add_colon='-P:'
compset -P '*:' && add_colon=''
local delimiter='\ '
(( compstate[quoting] )) && delimiter=' '
compset -P '* ' && compset -q
compadd "$expl[@]" $add_colon -S$delimiter -q -a _perl_config_vars
}
_perl_unicode_flags () {
_values -s '' 'unicode bitmask or flags' \
'(S)I[ 1 STDIN is assumed to be in UTF-8]' \
'(S)O[ 2 STDOUT will be in UTF-8]' \
'(S)E[ 4 STDERR will be in UTF-8]' \
'(I O E)S[ 7 I + O + E]' \
'(D)i[ 8 UTF-8 is the default PerlIO layer for input streams]' \
'(D)o[ 16 UTF-8 is the default PerlIO layer for output streams]' \
'(i o)D[ 24 i + o]' \
'A[ 32 the @ARGV elements are expected to be strings encoded in UTF-8]' \
'L[ 64 make "IOEioA" conditional on the locale environment variables]' \
'a[256 set ${^UTF8CACHE} to -1, used for debugging]' \
}
_perl_debugging_flags () {
_values -s '' 'debug flag or bitmask' \
'p[ 1 tokenizing and parsing (with v, display parse stack)]' \
's[ 2 stack snapshots (with v, display all stacks)]' \
'l[ 4 context (loop) stack processing]' \
't[ 8 trace execution]' \
'o[ 16 method and overload resolution]' \
'c[ 32 string/numeric conversions]' \
'P[ 64 print profiling info, source file input state]' \
'm[ 128 memory and SV allocation]' \
'f[ 256 format processing]' \
'r[ 512 regular expression parsing and execution]' \
'x[ 1024 syntax tree dump]' \
'u[ 2048 tainting checks]' \
'U[ 4096 unofficial, user hacking (reserved for private, unreleased use)]' \
'X[ 16384 scratchpad allocation]' \
'D[ 32768 cleaning up]' \
'S[ 66536 Op slab allocation]' \
'T[ 131072 tokenising]' \
'R[ 262144 include reference counts of dumped variables (e.g. when using -Ds)]' \
"J[ 524288 show s,t,P-debug (don't jump over) on opcodes within package DB]" \
'v[ 1048576 verbose: use in conjunction with other flags]' \
'C[ 2097152 copy-on-write]' \
'A[ 4194304 consistency checks on internal structures]' \
'q[ 8388608 quiet - currently only suppresses the "EXECUTING" message]' \
'M[ 16777216 trace smart match resolution]' \
'B[ 33554432 dump subroutine definitions, including special blocks like BEGIN]' \
'L[ 67108864 trace locale-related info]' \
'i[134217728 trace PerlIO layer processing]' \
'y[268435456 trace y///, tr/// compilation and execution]'
}
_perl "$@"
|