From 24e08cbad4d455c0ea0d5e7994d8469a9fc6790b Mon Sep 17 00:00:00 2001 From: Jeffrey Friedl Date: Sun, 31 Mar 2002 17:32:34 -0800 Subject: getting rid of a few superfluous $&/$` Message-Id: <200204010932.g319WY886939@ventrue.corp.yahoo.com> (with more-backward-compat than just using @- and @+, also by Jeffrey) (The version number of Text::Balanced intentionally not increased since Damian will make a new release after 5.8) p4raw-id: //depot/perl@15668 --- lib/Text/Balanced.pm | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'lib/Text') diff --git a/lib/Text/Balanced.pm b/lib/Text/Balanced.pm index 06e4fe1003..ee83e545dc 100644 --- a/lib/Text/Balanced.pm +++ b/lib/Text/Balanced.pm @@ -30,6 +30,15 @@ $VERSION = '1.89'; Exporter::export_ok_tags('ALL'); +## +## These shenanagins are to avoid using $& in perl5.6+ +## +my $GetMatchedText = ($] < 5.006) ? eval 'sub { $& } ' + : eval 'sub { + substr($_[0], $-[0], $+[0] - $-[0]) + }'; + + # PROTOTYPES sub _match_bracketed($$$$$$); @@ -328,7 +337,8 @@ sub _match_tagged # ($$$$$$$) if (!defined $rdel) { - $rdelspec = $&; + $rdelspec = &$GetMatchedText($$textref); + unless ($rdelspec =~ s/\A([[(<{]+)($XMLNAME).*/ quotemeta "$1\/$2". revbracket($1) /oes) { _failmsg "Unable to construct closing tag to match: $rdel", @@ -911,7 +921,8 @@ sub extract_multiple (;$$$$) # ($text, $functions_ref, $max_fields, $ignoreunkno elsif (ref($func) eq 'Text::Balanced::Extractor') { @bits = $field = $func->extract($$textref) } elsif( $$textref =~ m/\G$func/gc ) - { @bits = $field = defined($1) ? $1 : $& } + { @bits = $field = defined($1) ? $1 : &$GetMatchedText($$textref) } + # substr() on previous line is "$&", without the pain $pref ||= ""; if (defined($field) && length($field)) { -- cgit v1.2.1