--- [EMAIL PROTECTED] wrote:
>
> I am a total beginner to perl. I wrote the program below to open a program
> file, read it line by line, and write each line to an output file after
> first putting two string lines out there. It compiles without errors but the
> output is a filename with zero length. What did I do wrong? Thank you!
>
>
> #!/usr/bin/perl -w
> use strict;
>
> open (infile, "<<moo.cgi");
> open (outfile, ">>snert.cgi");
>
> my @linesin = <infile>;
>
> foreach (@linesin) {
>
> print outfile "output line 1\n";
> print outfile "output line 2\n";
> print outfile "$_\n";
>
> }
>
> close (infile);
> close (outfile);
Richard,
For a "total beginner", your code looks pretty good. There are, however, a few things
we can do
to help this code. First, you have a problem:
open (infile, "<<moo.cgi");
I am not aware of any "<<" mode for opening files. Since you don't test to see
whether or not the
file open was successful, this silently fails. Here's a quick cleanup that assumes
you want to
open the first file as read-only and the second file as append.
#!/usr/bin/perl -w
use strict;
open INFILE, "< moo.cgi" or die "Cannot open moo.cgi for reading: $!";
open OUTFILE, ">> snert.cgi" or die "Cannot open snert.cgi for appending: $!";
my @linesin = <INFILE>;
foreach (@linesin) {
#print OUTFILE "output line 1\n";
#print OUTFILE "output line 2\n";
print OUTFILE $_;
}
close (INFILE);
close (OUTFILE);
I commented out two lines as I wasn't sure of your intent.
Cheers,
Curtis "Ovid" Poe
=====
"Ovid" on http://www.perlmonks.org/
Someone asked me how to count to 10 in Perl:
push@A,$_ for reverse q.e...q.n.;for(@A){$_=unpack(q|c|,$_);@a=split//;
shift@a;shift@a if $a[$[]eq$[;$_=join q||,@a};print $_,$/for reverse @A
__________________________________________________
Do You Yahoo!?
Send FREE video emails in Yahoo! Mail!
http://promo.yahoo.com/videomail/
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]