John Dillon wrote:
> 
> According to
> http://vipe.technion.ac.il/~shlomif/lecture/Perl/Newbies/lecture2/argv.html
> the following program will do ...whatever (make a backup of files) and it
> takes the file specified at the command line.  I guessed from this that one
> has a .pl file with the following script, execute it at c: by typing its
> name and then the program stops and asks you what file you want to specify.
> But this does not happen.  So how do you get the filename into the script?

You type in the file name after the program name:

C:\> program.pl filename


> use strict;
> 
> my $filename = $ARGV[0];

The @ARGV array contains the contents of the command line after the
program name.

C:\> program.pl -f filename 2 3

# $0 contains 'program.pl' or 'c:\program.pl'
# #ARGV[0] contains '-f'
# #ARGV[1] contains 'filename'
# #ARGV[2] contains '2'
# #ARGV[3] contains '3'


> open I, "<".$filename;
> open O, ">".$filename.".bak";

You should _ALWAYS_ verify that the files opened correctly.

open I, "<$filename" or die "Cannot open $filename: $!";
open O, ">$filename.bak" or die "Cannot open $filename.bak: $!";

And, since you are on Windows, you may want to binmode the files:

binmode I;
binmode O;


> print O join("",<I>);

You don't need a join() in there.

print O <I>;

However that will read the entire file into memory before printing it
out.  This is more memory efficient:

print O while <I>;


> close(I);
> close(O);


John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to