Re: comparing kit names
[email protected] (Gunnar Hjalmarsson)
| Newsgroups | perl.beginners |
|---|---|
| Message-ID | <[email protected]> |
perl_learner wrote: > On May 5, 3:26 am, [email protected] (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