This is a live mirror of the Perl 5 development currently hosted at
https://github.com/perl/perl5
https://perl5.git.perl.org
/
perl5.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
untodo the no-longer-failing todo test for rgs' patch
[perl5.git]
/
lib
/
English.pm
diff --git
a/lib/English.pm
b/lib/English.pm
index
2953a80
..
c11fbed
100644
(file)
--- a/
lib/English.pm
+++ b/
lib/English.pm
@@
-1,7
+1,9
@@
package English;
package English;
+our $VERSION = '1.04';
+
require Exporter;
require Exporter;
-@ISA = (Exporter);
+@ISA =
qw
(Exporter);
=head1 NAME
=head1 NAME
@@
-9,6
+11,7
@@
English - use nice English (or awk) names for ugly punctuation variables
=head1 SYNOPSIS
=head1 SYNOPSIS
+ use English qw( -no_match_vars ) ; # Avoids regex performance penalty
use English;
...
if ($ERRNO =~ /denied/) { ... }
use English;
...
if ($ERRNO =~ /denied/) { ... }
@@
-27,29
+30,52
@@
$INPUT_RECORD_SEPARATOR if you are using the English module.
See L<perlvar> for a complete list of these.
See L<perlvar> for a complete list of these.
-=head1 BUGS
+=head1 PERFORMANCE
+
+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,
+try doing
-This module provokes sizeable inefficiencies for regular expressions,
-due to unfortunate implementation details. If performance matters,
-consider avoiding English.
+ use English qw( -no_match_vars ) ;
+
+. B<It is especially important to do this in modules to avoid penalizing
+all applications which use them.>
=cut
no warnings;
=cut
no warnings;
+my $globbed_match ;
+
# Grandfather $NAME import
sub import {
my $this = shift;
# Grandfather $NAME import
sub import {
my $this = shift;
- my @list =
@_
;
+ my @list =
grep { ! /^-no_match_vars$/ } @_
;
local $Exporter::ExportLevel = 1;
local $Exporter::ExportLevel = 1;
+ if ( @_ == @list ) {
+ *EXPORT = \@COMPLETE_EXPORT ;
+ $globbed_match ||= (
+ eval q{
+ *MATCH = *& ;
+ *PREMATCH = *` ;
+ *POSTMATCH = *' ;
+ 1 ;
+ }
+ || do {
+ require Carp ;
+ Carp::croak("Can't create English for match leftovers: $@") ;
+ }
+ ) ;
+ }
+ else {
+ *EXPORT = \@MINIMAL_EXPORT ;
+ }
Exporter::import($this,grep {s/^\$/*/} @list);
}
Exporter::import($this,grep {s/^\$/*/} @list);
}
-@EXPORT = qw(
+@
MINIMAL_
EXPORT = qw(
*ARG
*ARG
- *MATCH
- *PREMATCH
- *POSTMATCH
*LAST_PAREN_MATCH
*INPUT_LINE_NUMBER
*NR
*LAST_PAREN_MATCH
*INPUT_LINE_NUMBER
*NR
@@
-87,8
+113,8
@@
sub import {
*EGID
*PROGRAM_NAME
*PERL_VERSION
*EGID
*PROGRAM_NAME
*PERL_VERSION
- *PERL_VERSION_TUPLE
*ACCUMULATOR
*ACCUMULATOR
+ *COMPILING
*DEBUGGING
*SYSTEM_FD_MAX
*INPLACE_EDIT
*DEBUGGING
*SYSTEM_FD_MAX
*INPLACE_EDIT
@@
-99,18
+125,30
@@
sub import {
*OSNAME
*LAST_REGEXP_CODE_RESULT
*EXCEPTIONS_BEING_CAUGHT
*OSNAME
*LAST_REGEXP_CODE_RESULT
*EXCEPTIONS_BEING_CAUGHT
+ *LAST_SUBMATCH_RESULT
+ @LAST_MATCH_START
+ @LAST_MATCH_END
+);
+
+
+@MATCH_EXPORT = qw(
+ *MATCH
+ *PREMATCH
+ *POSTMATCH
);
);
+@COMPLETE_EXPORT = ( @MINIMAL_EXPORT, @MATCH_EXPORT ) ;
+
# The ground of all being. @ARG is deprecated (5.005 makes @_ lexical)
*ARG = *_ ;
# Matching.
# The ground of all being. @ARG is deprecated (5.005 makes @_ lexical)
*ARG = *_ ;
# Matching.
- *MATCH = *& ;
- *PREMATCH = *` ;
- *POSTMATCH = *' ;
*LAST_PAREN_MATCH = *+ ;
*LAST_PAREN_MATCH = *+ ;
+ *LAST_SUBMATCH_RESULT = *^N ;
+ *LAST_MATCH_START = *-{ARRAY} ;
+ *LAST_MATCH_END = *+{ARRAY} ;
# Input.
# Input.
@@
-148,6
+186,8
@@
sub import {
*CHILD_ERROR = *? ;
*OS_ERROR = *! ;
*ERRNO = *! ;
*CHILD_ERROR = *? ;
*OS_ERROR = *! ;
*ERRNO = *! ;
+ *OS_ERROR = *! ;
+ *ERRNO = *! ;
*EXTENDED_OS_ERROR = *^E ;
*EVAL_ERROR = *@ ;
*EXTENDED_OS_ERROR = *^E ;
*EVAL_ERROR = *@ ;
@@
-167,8
+207,7
@@
sub import {
# Internals.
# Internals.
- *PERL_VERSION = *] ;
- *PERL_VERSION_TUPLE = *^V ;
+ *PERL_VERSION = *^V ;
*ACCUMULATOR = *^A ;
*COMPILING = *^C ;
*DEBUGGING = *^D ;
*ACCUMULATOR = *^A ;
*COMPILING = *^C ;
*DEBUGGING = *^D ;
@@
-186,6
+225,6
@@
sub import {
# *ARRAY_BASE = *[ ;
# *OFMT = *# ;
# *ARRAY_BASE = *[ ;
# *OFMT = *# ;
-# *
MULTILINE_MATCHING = **
;
+# *
OLD_PERL_VERSION = *]
;
1;
1;