On Jun 28, 12:00 pm, [EMAIL PROTECTED] (Ved) wrote:
> Now I have to print a single line at say line number 20 in each of 150
> number of  kat.s file.

Hey, another chance to show off my favorite Perl module, IO::All.

> Situation is bit complex (atleast for a beginer like me).

Actually it is so simple (with IO::All) that you're gonna think I'm
pulling your leg...

#!/usr/bin/perl
   use strict;
   use warnings;
   use IO::All;

   my $dir = '/tmp/clpm';   #root directory of data
   my $line = 19;           #print line 20 (first line is line zero)
   my $file = 'kat.s';      #match this filename

   map {print "@$_[$line]\n"}
      io($dir)->filter(sub{$_->filename eq $file})->all_files(0);

__END__



That's it.  Really.

IO::All is a proxy to a bunch of I/O modules.  In this case, it is
doing two things:

   io($dir)->filter(sub{$_->filename eq $file})->all_files(0);

This uses File::Find to recurse all directories below $dir and find
all files named 'kat.s'.

   map {print "@$_[$line]\n"}

This uses Tie::File to treat the file like an array; I print the line
I want (line #20, which is array element #19).

IO::All provides all of your basic error-handling services, so no need
to futz around with that.

Cheers!


--
The best way to get a good answer is to ask a good question.
David Filmer (http://DavidFilmer.com)


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to