Commit | Line | Data |
---|---|---|
8990e307 LW |
1 | package English; |
2 | ||
b75c8c73 MS |
3 | our $VERSION = '1.00'; |
4 | ||
8990e307 LW |
5 | require Exporter; |
6 | @ISA = (Exporter); | |
7 | ||
f06db76b AD |
8 | =head1 NAME |
9 | ||
10 | English - use nice English (or awk) names for ugly punctuation variables | |
11 | ||
12 | =head1 SYNOPSIS | |
13 | ||
60ed1d8c | 14 | use English qw( -no_match_vars ) ; # Avoids regex performance penalty |
f06db76b AD |
15 | use English; |
16 | ... | |
17 | if ($ERRNO =~ /denied/) { ... } | |
18 | ||
19 | =head1 DESCRIPTION | |
20 | ||
21 | This module provides aliases for the built-in variables whose | |
22 | names no one seems to like to read. Variables with side-effects | |
23 | which get triggered just by accessing them (like $0) will still | |
24 | be affected. | |
25 | ||
26 | For those variables that have an B<awk> version, both long | |
27 | and short English alternatives are provided. For example, | |
28 | the C<$/> variable can be referred to either $RS or | |
29 | $INPUT_RECORD_SEPARATOR if you are using the English module. | |
30 | ||
31 | See L<perlvar> for a complete list of these. | |
32 | ||
60ed1d8c | 33 | =head1 PERFORMANCE |
f2545c07 | 34 | |
60ed1d8c GS |
35 | This module can provoke sizeable inefficiencies for regular expressions, |
36 | due to unfortunate implementation details. If performance matters in | |
37 | your application and you don't need $PREMATCH, $MATCH, or $POSTMATCH, | |
38 | try doing | |
39 | ||
40 | use English qw( -no_match_vars ) ; | |
41 | ||
42 | . B<It is especially important to do this in modules to avoid penalizing | |
43 | all applications which use them.> | |
f2545c07 | 44 | |
f06db76b AD |
45 | =cut |
46 | ||
db376a24 | 47 | no warnings; |
748a9306 | 48 | |
60ed1d8c GS |
49 | my $globbed_match ; |
50 | ||
748a9306 LW |
51 | # Grandfather $NAME import |
52 | sub import { | |
53 | my $this = shift; | |
60ed1d8c | 54 | my @list = grep { ! /^-no_match_vars$/ } @_ ; |
748a9306 | 55 | local $Exporter::ExportLevel = 1; |
60ed1d8c GS |
56 | if ( @_ == @list ) { |
57 | *EXPORT = \@COMPLETE_EXPORT ; | |
58 | $globbed_match ||= ( | |
59 | eval q{ | |
be154528 | 60 | *MATCH = \$& ; |
61 | *PREMATCH = \$` ; | |
62 | *POSTMATCH = \$' ; | |
60ed1d8c GS |
63 | 1 ; |
64 | } | |
65 | || do { | |
66 | require Carp ; | |
67 | Carp::croak "Can't create English for match leftovers: $@" ; | |
68 | } | |
69 | ) ; | |
70 | } | |
71 | else { | |
72 | *EXPORT = \@MINIMAL_EXPORT ; | |
73 | } | |
748a9306 LW |
74 | Exporter::import($this,grep {s/^\$/*/} @list); |
75 | } | |
a0d0e21e | 76 | |
60ed1d8c | 77 | @MINIMAL_EXPORT = qw( |
8990e307 | 78 | *ARG |
748a9306 LW |
79 | *LAST_PAREN_MATCH |
80 | *INPUT_LINE_NUMBER | |
81 | *NR | |
82 | *INPUT_RECORD_SEPARATOR | |
83 | *RS | |
84 | *OUTPUT_AUTOFLUSH | |
85 | *OUTPUT_FIELD_SEPARATOR | |
86 | *OFS | |
87 | *OUTPUT_RECORD_SEPARATOR | |
88 | *ORS | |
89 | *LIST_SEPARATOR | |
90 | *SUBSCRIPT_SEPARATOR | |
91 | *SUBSEP | |
92 | *FORMAT_PAGE_NUMBER | |
93 | *FORMAT_LINES_PER_PAGE | |
94 | *FORMAT_LINES_LEFT | |
95 | *FORMAT_NAME | |
96 | *FORMAT_TOP_NAME | |
97 | *FORMAT_LINE_BREAK_CHARACTERS | |
98 | *FORMAT_FORMFEED | |
99 | *CHILD_ERROR | |
100 | *OS_ERROR | |
101 | *ERRNO | |
d57fa8b6 | 102 | *EXTENDED_OS_ERROR |
748a9306 LW |
103 | *EVAL_ERROR |
104 | *PROCESS_ID | |
105 | *PID | |
106 | *REAL_USER_ID | |
107 | *UID | |
108 | *EFFECTIVE_USER_ID | |
109 | *EUID | |
110 | *REAL_GROUP_ID | |
111 | *GID | |
112 | *EFFECTIVE_GROUP_ID | |
113 | *EGID | |
114 | *PROGRAM_NAME | |
115 | *PERL_VERSION | |
116 | *ACCUMULATOR | |
117 | *DEBUGGING | |
118 | *SYSTEM_FD_MAX | |
119 | *INPLACE_EDIT | |
120 | *PERLDB | |
121 | *BASETIME | |
122 | *WARNING | |
123 | *EXECUTABLE_NAME | |
d57fa8b6 | 124 | *OSNAME |
66558a10 GS |
125 | *LAST_REGEXP_CODE_RESULT |
126 | *EXCEPTIONS_BEING_CAUGHT | |
fe307981 GS |
127 | @LAST_MATCH_START |
128 | @LAST_MATCH_END | |
8990e307 LW |
129 | ); |
130 | ||
60ed1d8c GS |
131 | |
132 | @MATCH_EXPORT = qw( | |
133 | *MATCH | |
134 | *PREMATCH | |
135 | *POSTMATCH | |
136 | ); | |
137 | ||
138 | @COMPLETE_EXPORT = ( @MINIMAL_EXPORT, @MATCH_EXPORT ) ; | |
139 | ||
fb73857a | 140 | # The ground of all being. @ARG is deprecated (5.005 makes @_ lexical) |
8990e307 | 141 | |
8990e307 LW |
142 | *ARG = *_ ; |
143 | ||
144 | # Matching. | |
145 | ||
be154528 | 146 | *LAST_PAREN_MATCH = \$+ ; |
147 | *LAST_MATCH_START = \@- ; | |
148 | *LAST_MATCH_END = \@+ ; | |
8990e307 LW |
149 | |
150 | # Input. | |
151 | ||
be154528 | 152 | *INPUT_LINE_NUMBER = \$. ; |
153 | *NR = \$. ; | |
154 | *INPUT_RECORD_SEPARATOR = \$/ ; | |
155 | *RS = \$/ ; | |
8990e307 LW |
156 | |
157 | # Output. | |
158 | ||
be154528 | 159 | *OUTPUT_AUTOFLUSH = \$| ; |
160 | *OUTPUT_FIELD_SEPARATOR = \$, ; | |
161 | *OFS = \$, ; | |
162 | *OUTPUT_RECORD_SEPARATOR = \$\ ; | |
163 | *ORS = \$\ ; | |
8990e307 LW |
164 | |
165 | # Interpolation "constants". | |
166 | ||
be154528 | 167 | *LIST_SEPARATOR = \$" ; |
168 | *SUBSCRIPT_SEPARATOR = \$; ; | |
169 | *SUBSEP = \$; ; | |
8990e307 LW |
170 | |
171 | # Formats | |
172 | ||
be154528 | 173 | *FORMAT_PAGE_NUMBER = \$% ; |
174 | *FORMAT_LINES_PER_PAGE = \$= ; | |
175 | *FORMAT_LINES_LEFT = \$- ; | |
176 | *FORMAT_NAME = \$~ ; | |
177 | *FORMAT_TOP_NAME = \$^ ; | |
178 | *FORMAT_LINE_BREAK_CHARACTERS = \$: ; | |
179 | *FORMAT_FORMFEED = \$^L ; | |
8990e307 LW |
180 | |
181 | # Error status. | |
182 | ||
be154528 | 183 | *CHILD_ERROR = \$? ; |
184 | *OS_ERROR = \$! ; | |
185 | *ERRNO = \$! ; | |
ab063544 | 186 | *OS_ERROR = \%! ; |
187 | *ERRNO = \%! ; | |
be154528 | 188 | *EXTENDED_OS_ERROR = \$^E ; |
189 | *EVAL_ERROR = \$@ ; | |
8990e307 LW |
190 | |
191 | # Process info. | |
192 | ||
be154528 | 193 | *PROCESS_ID = \$$ ; |
194 | *PID = \$$ ; | |
195 | *REAL_USER_ID = \$< ; | |
196 | *UID = \$< ; | |
197 | *EFFECTIVE_USER_ID = \$> ; | |
198 | *EUID = \$> ; | |
199 | *REAL_GROUP_ID = \$( ; | |
200 | *GID = \$( ; | |
201 | *EFFECTIVE_GROUP_ID = \$) ; | |
202 | *EGID = \$) ; | |
203 | *PROGRAM_NAME = \$0 ; | |
8990e307 LW |
204 | |
205 | # Internals. | |
206 | ||
be154528 | 207 | *PERL_VERSION = \$^V ; |
208 | *ACCUMULATOR = \$^A ; | |
209 | *COMPILING = \$^C ; | |
210 | *DEBUGGING = \$^D ; | |
211 | *SYSTEM_FD_MAX = \$^F ; | |
212 | *INPLACE_EDIT = \$^I ; | |
213 | *PERLDB = \$^P ; | |
214 | *LAST_REGEXP_CODE_RESULT = \$^R ; | |
215 | *EXCEPTIONS_BEING_CAUGHT = \$^S ; | |
216 | *BASETIME = \$^T ; | |
217 | *WARNING = \$^W ; | |
218 | *EXECUTABLE_NAME = \$^X ; | |
219 | *OSNAME = \$^O ; | |
8990e307 LW |
220 | |
221 | # Deprecated. | |
222 | ||
be154528 | 223 | # *ARRAY_BASE = \$[ ; |
224 | # *OFMT = \$# ; | |
225 | # *MULTILINE_MATCHING = \$* ; | |
226 | # *OLD_PERL_VERSION = \$] ; | |
8990e307 LW |
227 | |
228 | 1; |