in reply to Re: Re: Using $_ as a temp var, especially in functions
in thread Using $_ as a temp var, especially in functions
If I had the chance, I would rewrite some_sub to work on lists, which would allow me to say
my @result = some_sub(qw(a b c d));But I will grant you that that is a somewhat facetious answer, as I understand your question to mean an arbitrarily complicated map code block and not something as simple.
But then were the map code block arbitrarily complicated, I would no longer be using map, but instead I would be using for, which would make the code look like:
my @result; for my $thing(qw(a b c d)) { # complex code block that munges $thing followed by push @result, $thing; }
On the Principle of Least Surprise, by and large I tend to put unsurprising code in maps and greps. That rules out function calls and other invisible things that might play around with $_. for blocks do not suffer from these problems because you can name your own topicalizer (or whatever it's called) with the for my $topic construct. If you stick to this, you can't be bitten by the types of problems you describe.
<update> if you have code running around secretly overloading the + operator, then clobbering $_ is likely the least of your problems. Just because you can write code that dicks around with $_, doesn't mean you should. We'll just have to agree to disagree. Your point is valid and I find no fault with it, I just see things differently.</update>
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re:x3 Using $_ as a temp var, especially in functions
by IlyaM (Parson) on Oct 23, 2002 at 13:49 UTC | |
by IlyaM (Parson) on Aug 07, 2003 at 07:34 UTC |