X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/ab063544b9b830d646a880f1404f8327afb8f9c6..2fe8bdbd8f254afbafdd3be0139e6df0e570b622:/lib/English.pm diff --git a/lib/English.pm b/lib/English.pm index 5383368..e40cc12 100644 --- a/lib/English.pm +++ b/lib/English.pm @@ -1,9 +1,9 @@ package English; -our $VERSION = '1.00'; +our $VERSION = '1.10'; require Exporter; -@ISA = (Exporter); +@ISA = qw(Exporter); =head1 NAME @@ -11,8 +11,10 @@ English - use nice English (or awk) names for ugly punctuation variables =head1 SYNOPSIS - use English qw( -no_match_vars ) ; # Avoids regex performance penalty use English; + use English qw( -no_match_vars ) ; # Avoids regex performance + # penalty in perl 5.16 and + # earlier ... if ($ERRNO =~ /denied/) { ... } @@ -32,6 +34,10 @@ See L for a complete list of these. =head1 PERFORMANCE +NOTE: This was fixed in perl 5.20. Mentioning these three variables no +longer makes a speed difference. This section still applies if your code +is to run on perl 5.18 or earlier. + This module can provoke sizeable inefficiencies for regular expressions, due to unfortunate implementation details. If performance matters in your application and you don't need $PREMATCH, $MATCH, or $POSTMATCH, @@ -57,14 +63,14 @@ sub import { *EXPORT = \@COMPLETE_EXPORT ; $globbed_match ||= ( eval q{ - *MATCH = \$& ; - *PREMATCH = \$` ; - *POSTMATCH = \$' ; + *MATCH = *& ; + *PREMATCH = *` ; + *POSTMATCH = *' ; 1 ; } || do { require Carp ; - Carp::croak "Can't create English for match leftovers: $@" ; + Carp::croak("Can't create English for match leftovers: $@") ; } ) ; } @@ -113,7 +119,9 @@ sub import { *EGID *PROGRAM_NAME *PERL_VERSION + *OLD_PERL_VERSION *ACCUMULATOR + *COMPILING *DEBUGGING *SYSTEM_FD_MAX *INPLACE_EDIT @@ -124,6 +132,7 @@ sub import { *OSNAME *LAST_REGEXP_CODE_RESULT *EXCEPTIONS_BEING_CAUGHT + *LAST_SUBMATCH_RESULT @LAST_MATCH_START @LAST_MATCH_END ); @@ -137,92 +146,92 @@ sub import { @COMPLETE_EXPORT = ( @MINIMAL_EXPORT, @MATCH_EXPORT ) ; -# The ground of all being. @ARG is deprecated (5.005 makes @_ lexical) +# The ground of all being. *ARG = *_ ; # Matching. - *LAST_PAREN_MATCH = \$+ ; - *LAST_MATCH_START = \@- ; - *LAST_MATCH_END = \@+ ; + *LAST_PAREN_MATCH = *+ ; + *LAST_SUBMATCH_RESULT = *^N ; + *LAST_MATCH_START = *-{ARRAY} ; + *LAST_MATCH_END = *+{ARRAY} ; # Input. - *INPUT_LINE_NUMBER = \$. ; - *NR = \$. ; - *INPUT_RECORD_SEPARATOR = \$/ ; - *RS = \$/ ; + *INPUT_LINE_NUMBER = *. ; + *NR = *. ; + *INPUT_RECORD_SEPARATOR = */ ; + *RS = */ ; # Output. - *OUTPUT_AUTOFLUSH = \$| ; - *OUTPUT_FIELD_SEPARATOR = \$, ; - *OFS = \$, ; - *OUTPUT_RECORD_SEPARATOR = \$\ ; - *ORS = \$\ ; + *OUTPUT_AUTOFLUSH = *| ; + *OUTPUT_FIELD_SEPARATOR = *, ; + *OFS = *, ; + *OUTPUT_RECORD_SEPARATOR = *\ ; + *ORS = *\ ; # Interpolation "constants". - *LIST_SEPARATOR = \$" ; - *SUBSCRIPT_SEPARATOR = \$; ; - *SUBSEP = \$; ; + *LIST_SEPARATOR = *" ; + *SUBSCRIPT_SEPARATOR = *; ; + *SUBSEP = *; ; # Formats - *FORMAT_PAGE_NUMBER = \$% ; - *FORMAT_LINES_PER_PAGE = \$= ; - *FORMAT_LINES_LEFT = \$- ; - *FORMAT_NAME = \$~ ; - *FORMAT_TOP_NAME = \$^ ; - *FORMAT_LINE_BREAK_CHARACTERS = \$: ; - *FORMAT_FORMFEED = \$^L ; + *FORMAT_PAGE_NUMBER = *% ; + *FORMAT_LINES_PER_PAGE = *= ; + *FORMAT_LINES_LEFT = *-{SCALAR} ; + *FORMAT_NAME = *~ ; + *FORMAT_TOP_NAME = *^ ; + *FORMAT_LINE_BREAK_CHARACTERS = *: ; + *FORMAT_FORMFEED = *^L ; # Error status. - *CHILD_ERROR = \$? ; - *OS_ERROR = \$! ; - *ERRNO = \$! ; - *OS_ERROR = \%! ; - *ERRNO = \%! ; - *EXTENDED_OS_ERROR = \$^E ; - *EVAL_ERROR = \$@ ; + *CHILD_ERROR = *? ; + *OS_ERROR = *! ; + *ERRNO = *! ; + *OS_ERROR = *! ; + *ERRNO = *! ; + *EXTENDED_OS_ERROR = *^E ; + *EVAL_ERROR = *@ ; # Process info. - *PROCESS_ID = \$$ ; - *PID = \$$ ; - *REAL_USER_ID = \$< ; - *UID = \$< ; - *EFFECTIVE_USER_ID = \$> ; - *EUID = \$> ; - *REAL_GROUP_ID = \$( ; - *GID = \$( ; - *EFFECTIVE_GROUP_ID = \$) ; - *EGID = \$) ; - *PROGRAM_NAME = \$0 ; + *PROCESS_ID = *$ ; + *PID = *$ ; + *REAL_USER_ID = *< ; + *UID = *< ; + *EFFECTIVE_USER_ID = *> ; + *EUID = *> ; + *REAL_GROUP_ID = *( ; + *GID = *( ; + *EFFECTIVE_GROUP_ID = *) ; + *EGID = *) ; + *PROGRAM_NAME = *0 ; # Internals. - *PERL_VERSION = \$^V ; - *ACCUMULATOR = \$^A ; - *COMPILING = \$^C ; - *DEBUGGING = \$^D ; - *SYSTEM_FD_MAX = \$^F ; - *INPLACE_EDIT = \$^I ; - *PERLDB = \$^P ; - *LAST_REGEXP_CODE_RESULT = \$^R ; - *EXCEPTIONS_BEING_CAUGHT = \$^S ; - *BASETIME = \$^T ; - *WARNING = \$^W ; - *EXECUTABLE_NAME = \$^X ; - *OSNAME = \$^O ; + *PERL_VERSION = *^V ; + *OLD_PERL_VERSION = *] ; + *ACCUMULATOR = *^A ; + *COMPILING = *^C ; + *DEBUGGING = *^D ; + *SYSTEM_FD_MAX = *^F ; + *INPLACE_EDIT = *^I ; + *PERLDB = *^P ; + *LAST_REGEXP_CODE_RESULT = *^R ; + *EXCEPTIONS_BEING_CAUGHT = *^S ; + *BASETIME = *^T ; + *WARNING = *^W ; + *EXECUTABLE_NAME = *^X ; + *OSNAME = *^O ; # Deprecated. -# *ARRAY_BASE = \$[ ; -# *OFMT = \$# ; -# *MULTILINE_MATCHING = \$* ; -# *OLD_PERL_VERSION = \$] ; +# *ARRAY_BASE = *[ ; +# *OFMT = *# ; 1;