On May 8, 9:09 am, [EMAIL PROTECTED] (Gunnar Hjalmarsson) wrote:
> perl_learner wrote:
> > On May 7, 4:55 am, [EMAIL PROTECTED] (Gunnar Hjalmarsson) wrote:
> >> perl_learner wrote:
> >>> On May 6, 10:08 am, [EMAIL PROTECTED] (Gunnar Hjalmarsson) wrote:
> >>>> perl_learner wrote:
> >>>>> my @kits = $KIT_LIST;
> >>>> How many elements do you think there are in @kits?
> >>> I have ~100 elements @kits. Why did you ask this question?
> >> Because when you just said
>
> >>      my @kits = $KIT_LIST;
>
> >> you had only one element in @kits.
>
> >>>>      my @kits = split ' ', $KIT_LIST;
> >>> Also with little change, "my @kits = split '  ', $KIT_LIST; ## added
> >>> an extra space to split"
> >>> I am getting the desired output.
> >> The extra space should not make a difference, since split(' ') is a
> >> special case that splits on all kinds of whitespace.
>
> >>      perldoc -f split
>
> >> --
> >> Gunnar Hjalmarsson
> >> Email:http://www.gunnar.cc/cgi-bin/contact.pl
>
> >>>>      my @kits = split '  ', $KIT_LIST;
>
> > The extra space had make a difference.....
> > Without extra space I was getting:
>
> > a a a . t . z a a a _ d . t . z b b b . t . z b b b _ d . t . z c c
> > c . t . z c c c _ d . t . z d d d . t . z e e e . t . z
>
> > With extra space I get the correct output: 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
>
> Now it's getting confusing. "Extra" space - compared to what?
>
> The correct format of this special split is
>
>      split ' ', EXPR
>
> i.e. two quote characters with _one_ space character between them.
>
> That's what I had initially suggested. When you said you added an extra
> space, you were getting two quote characters with _two_ space characters
> between them. As John pointed out, the latter is no longer the special
> case format, and is simply interpreted by Perl as
>
>      split /  /, EXPR
>
> Maybe, in order to reduce the confusion, could you post the complete
> final version of your code?
>
> --
> Gunnar Hjalmarsson
> Email:http://www.gunnar.cc/cgi-bin/contact.pl- Hide quoted text -
>
> - Show quoted text -

Sorry for any confusion. You are right. The extra space I was
mentioning it was a visual error from my side. Sorry for that.

Thaks a lot.

Here is the complete working code:

use strict;
use warnings;

my $KIT_LOCATION="/lnx/dep/packages/";
my $KIT_LIST=`ls $KIT_LOCATION/*.t.Z`;

$KIT_LIST=~ s/$KIT_LOCATION\///g;

my @kits = split' ',$KIT_LIST;##putting all kits (both _d and Z) to an
array list, each kit comes up with a space and all kits are in a same
line

#print "@kits\n\n";##prints all kits with a space in a single line
(array) or as element
#print "$kits[0]\n";##just for verification, prints first element of
the kits array
#print "$kits[1]\n";##just for verification, prints second element of
the kits array
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};##prints only the list of Z
kits where their _d kits are missing
     }


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


Reply via email to