I\'ve got two questions about the Perl open
function:
1) I seem to remember from Perl Best Practices that the 3-argument version of open<
OUT
) is not a good idea, as they are global across your entire program - you need to be sure that no other routine including those in modules are using the same name (including in the future).my $f; open $f, ">$some_filename";
is exposed to the bug where $some_filename
containing a leading >
will change the program's behaviour.Using the three-argument form avoids this by separating the mode and filename into separate arguments where they can't interfere.
Moreover, using the lots-of-arguments form with pipes is a very good idea:
open $pipe, '|-', 'sendmail', 'fred@somewhere.fake';
Is better than doing it all as a single string – it avoids possible shell injection etc.