Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery

Re: unwanted ARGV in subroutine

by choroba (Bishop)
on Oct 29, 2012 at 21:48 UTC ( #1001428=note: print w/replies, xml ) Need Help??

in reply to unwanted ARGV in subroutine

my $text = do { local( @ARGV, $/ ) = $infile ; <> } ;
This should locally change @ARGV to contain $infile and load the whole file into $text. Maybe the file is huge and you have just to wait a bit?
لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

Replies are listed 'Best First'.
Re^2: unwanted ARGV in subroutine
by runrig (Abbot) on Oct 29, 2012 at 22:19 UTC
    And if the file is huge, the OP shouldn't be loading it into memory, and should write to a temp file, and then rename it at the end.

      Hi rizzler

      Try this

      sub addheader{ my($infile,$header)=@_; open(FILE, "$infile"); my $text=do {local $/; <FILE>}; close FILE; open(FILE,">$infile"); print FILE $header; print FILE $text; close FILE; }
        Please don't try that :) it doesn't use error checking ... If you want to copy a file use File::Copy, for moving File::Move

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1001428]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (5)
As of 2018-06-24 00:34 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (126 votes). Check out past polls.