Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re^3: Strange Global Array issue

by hdb (Monsignor)
on Apr 16, 2013 at 15:01 UTC ( [id://1028943]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Strange Global Array issue
in thread Strange Global Array issue

There is only one $_ in your program and you did use it for two different purposes. One has to be careful sometimes with Perl's build-in variables.

From "Modern Perl", page 7: http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf

As English gets confusing when you have too many pronouns and antecedents, you must take care mixing uses of $_ implicitly or explicitly. Uncautious simultaneous use of $_ may lead to one piece of code silently overwriting the value written by another. If you write a function which uses $_, you may clobber a caller function's use of $_.

UPDATE: In order to make your script more robust overall, you might also want to remove $_ from your outer loop.

foreach my $regex (@regexes){ ($fileBodyMatch, $decode ) = checkFileBody ($file, $regex->{bodyre +gex}); }

Replies are listed 'Best First'.
Re^4: Strange Global Array issue
by topher (Scribe) on Apr 16, 2013 at 17:39 UTC

    The use of $_ in a foreach doesn't add much risk or cause much reduction in the robustness of the code. foreach, like map and grep, will always localize $_ within its scope.

    There is only the slight risk of the function mucking with $_ (as the original poster's original function did); however, any function that uses or modifies a non-localized $_ is broken.

    Christopher Cashell

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1028943]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others examining the Monastery: (3)
As of 2024-04-24 19:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found