in reply to slurp
Because the magic variables are relatively global, a change in one forgotten corner of your program somewhere can have far-reaching effects on other code. For example, if I were to write the (habitual) code thusly:
I assumed that the Input Record Separator ($/) was set to its default of "\n", as it almost always is. If I had called your subroutine earlier, it wouldn't be set to that.open (INPUT, $filename) || die "Can't open $filename: $!"; while (<INPUT>) { hack($_); slice($_); dice($_); vacuum_seal($_); } close INPUT || die "Wow, we're in for it now: $!";
Imagine the pain and suffering if that were in a module.
The solution is twofold. First, use local. This is one of the few places where it's absolutely necessary. Second (related to the first), place the entire code in a block -- that way, the local copy of $/ will be in effect only for that block, and the normal value will be in effect everywhere else.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
RE: RE: slurp
by Adam (Vicar) on Jun 20, 2000 at 00:31 UTC |