--- zentara <[EMAIL PROTECTED]> wrote: > Hi, > I'm trying to find all .so.xxx files on my system. > Eventually I want to do things with them, but for > now I just want to identify them. > > I pretty much have it, except I'm lacking enough > regex knowledge to separate out the so from the .so. > files. > > I'm matching > > cursor > moc_sound > libqt.so.2 > libqt-mt.so > etc. > > It's pretty close but not clean enough. > Anyone? Thanks. > > ########################################## > #!/usr/bin/perl -w > use strict; > use File::Basename; > use File::Find; > my $name; > my $dirname= '/usr/lib'; > > find (\&found, $dirname); > > sub found { > ($name) = basename("$File::Find::name"); > if ($name =~ m/.so/){ > print $name,"\n"; > }} > ##########################################
If I read your question correctly, you wanted to match files with a literal ".so." embedded in the same (i.e., a dot both before and after the 'so'): #!/usr/bin/perl -w use strict; use File::Basename; use File::Find; my $dirname= '/usr/lib'; find (\&found, $dirname); sub found { my $name = basename( $File::Find::name ); if ($name =~ m/\.so\./){ print "$name\n"; } } Note that I also declared $name in found() instead of outside of it. Once the subroutine is finished, you would only have the last value in $name anyway, so declaring it outside of the function is useless. On the other hand: my @names; sub found { my $name = basename( $File::Find::name ); if ($name =~ m/\.so\./){ push @names, $name; } } I list that in the event you were trying to preserve the filenames for some reason. 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]