Chris Federico wrote:

> Hi List ,
> 
> 
>  I have a directory that I want to read . Lets say the name of the
>  directory
> is my scripts (Windows platform ) . In this directory is text files . What
> I want to do is read the directory and extract 2 lines out of each text
> file . So far I'm able to create an Array but I'm not sure how to now read
> the text
> files and extract 2 lines (they are dynamic as far as  info but always the
> same line numbers) . Here is what I have so far :
> 
> 
> #!/usr/bin/perl -w
> 
> use strict;
> opendir(MYSCRIPTS, 'c:\support\my scripts') || die "cannot open my
> scripts: $!";
> @FILES=readdir MYSCRIPTS;
> # reads the contents of the directory
> closedir(MySCRIPTS);
> 
> @FILES=<*.txt>;
> #Glob only the text files
> 

assume you already have all the files you need in @FILES, you can simply 
loop through the @FILES array, open the file one by one and extract 2 lines 
out like:

foreach my $file (@FILES){
        open(FILE,$file) || die $!;
        my $line1 = <FILE>;
        my $line2 = <FILE>;
        #-- do whatever you need to do with the 2 lines
        close(FILE);
}

__END__

the above always extract the first 2 lines from the file. if any your file 
happen to have less than 2 lines, $line1 or/and $line2 might be 'undef'

if you need any other 2 lines, you can look at the $. variable where it 
tells you exactly which line Perl is reading. for example, to extract line 
2 and line 3 from a file named foo.txt, i will do:

#!/usr/bin/perl -w
use strict;

my $line2 = undef;
my $line3 = undef;

open(FILE,'foo.txt') || die $!;
while(<FILE>){
        $line2 = $_ if($. eq 2);
        $line3 = $_ if($. eq 3);
        #-- once we have what we need, no need to stay looping
        last if(defined $line2 && defined $line3);
}
close(FILE);

__END__

david

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

Reply via email to