Anees wrote:
Dear friends:
Hello,
I am a perl begineer. I have created an script which prints each 100th record from the file as shown below: #!/usr/bin/perl
use warnings; use strict;
$maxRecords=20000; $steps=100; $index=1; $recCounter=0; while (<>){
That is short for: while ( defined( $_ = <> ) ) { $ perl -MO=Deparse -e'while (<>) {}' while (defined($_ = <ARGV>)) { (); } -e syntax OK
if(defined) {
So this test is superfluous because the while conditional already tests for definedness.
if (($index % $steps) == 0) {
Perl provides the $. variable so you don't need $index: unless ( $. % $steps ) {
print $_; $recCounter++; } if($recCounter > $maxRecords){ break; } $index++; } } The above script works fine. But when I modify the script as follows: #!/usr/bin/perl
use warnings; use strict;
$maxRecords=20000; $steps=100; $index=1; $recCounter=0; while (<> && defined){
When you add the "&& defined" the assignment to $_ is not done nor the test for definedness.
$ perl -MO=Deparse -e'while (<> && defined) {}' while (<ARGV> and defined $_) { (); } -e syntax OK
if (($index % $steps) == 0) { print $_; $recCounter++; } if($recCounter > $maxRecords){ break; } $index++; }
John -- Perl isn't a toolbox, but a small machine shop where you can special-order certain sorts of tools at low cost and in short order. -- Larry Wall -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/