develooper Front page | perl.beginners | Postings from May 2008

Re: comparing kit names

Thread Previous | Thread Next
From:
Gunnar Hjalmarsson
Date:
May 6, 2008 10:08
Subject:
Re: comparing kit names
perl_learner wrote:
> On May 5, 3:26 am, nore...@gunnar.cc (Gunnar Hjalmarsson) wrote:
>>
>>      my @kits = qw( aaa.t.z aaa_d.t.z bbb.t.z bbb_d.t.z
>>                    ccc.t.z ccc_d.t.z ddd.t.z eee.t.z );
>>
>>      my %hash = map {
>>          ( my $tmp = $_) =~ s/_d(\.t\.z)$/$1/; $tmp => 1
>>      } grep /_d\.t\.z$/, @kits;
>>
>>      foreach my $kit ( grep !/_d\.t\.z$/, @kits ) {
>>          print "$kit\n" unless $hash{$kit};
>>      }
> 
> Thanks for your reply. It works out if I use qw option. However I have
> bigger list. I am sending my program, it provides me both *_d.t.Z as
> well as *Z list. Not doing the comparison.

You should never ask for help on a list with fixing buggy code if you 
haven't first asked Perl for help.

     use strict;
     use warnings;

> $KIT_LOCATION="/lnx/dep/packages";
> $KIT_LIST=`ls $KIT_LOCATION/*.t.Z`;
> #print $KIT_LIST;
> $KIT_LIST=~ s/$KIT_LOCATION\///g;
> #print $KIT_LIST;
> my @kits = $KIT_LIST;

How many elements do you think there are in @kits?

     my @kits = split ' ', $KIT_LIST;

> chomp ($kits);
---------^

> #print "@kits";###prints out both .Z and _d.t.Z
> 
>      my %hash = map {
>         ( my $tmp = $_) =~ s/_d(\.t\.Z)$/$1/; $tmp => 1
>      } grep /_d\.t\.Z$/, @kits;
> 
> 
>         #print "@kits\n"; #prints out both .Z and _d.t.Z
> 
>      foreach my $kit ( grep !/_d\.t\.Z$/, @kits ) {
>          #print "$kit\n" unless $hash{$kit}; #prints out both .Z and
> _d.t.Z
>      }
> 

-- 
Gunnar Hjalmarsson
Email: http://www.gunnar.cc/cgi-bin/contact.pl

Thread Previous | Thread Next


Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About