On Wed, 20 Apr 2005 17:04:50 +0300 Offer Kaye <[EMAIL PROTECTED]> wrote:
> On 4/20/05, Paul Kraus wrote: > > Why does this work.... > > my $date = 'one | two |three |'; > > my @record = map ( whitespace($_), (split /\|/,$_) ); > > No, it won't work - you need to replace the $_ at the end with $date > > > sub whitespace { > > my $string = shift; > > $string =~ s/^\s+|\s+$//g; > > return $string; > > } > > > > but this does not .... > > my @record = map ( $_=~ s/^\s+|\s+$//g,(split /\|/,$_) ); > > > > 1. Again, the $_ at the end needs to be $date > 2. This doesn't work because the s/// returns the number of > subtitutions made, not the string it changed, so that is what map gets > and passes (a list of numbers). See "perldoc perlop" for details. You > can use the block form of map, as follows: > my @record = map {s/^\s+|\s+$//g; $_} split /\|/,$date; > This works because the $_ statement at the end of the block now > constitutes the return value. > 3. But there's an even easier way, without having to use map: > my @record = split /\s*\|\s*/,$date; ------>this seems it cant delete spaces of the last element. > HTH, > -- > Offer Kaye > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > <http://learn.perl.org/> <http://learn.perl.org/first-response> > > > -- Whatever you do will be insignificant,but the important is you do it! It doesn't matter who you are, it's what you do that takes you far! -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>