in reply to How to call a function on each item after a split?
Hi,
I thought, \s+ also covers \n that chomp is suppose to remove?
I modified the OP clean subroutine and both map and grep gave the happy endling.
So, there is really no need for the extra $_ as perviously stated, if the modified subroutine is considered.
check below:
Please, before one shutdown the wonderful solution first given by aitap above on this issue,
Or wonder why "the" lovely map function doesn't do the "magic" as expected, Please, check the OP subroutine clean().
Why use chomp and then sepeartely, remove spaces? At the beginning and endling of each value?sub clean { chomp($_[0]); $_[0] =~ s/^\s+//g; $_[0] =~ s/\s+$//g; }
I thought, \s+ also covers \n that chomp is suppose to remove?
I modified the OP clean subroutine and both map and grep gave the happy endling.
So, there is really no need for the extra $_ as perviously stated, if the modified subroutine is considered.
check below:
OUTPUT#!/usr/bin/perl use strict; use warnings; my $str = "item1 | item2| item3 |item4| "; my @cleaned1 = map { clean_modify($_) } split( /\|/, $str ); my @cleaned2 = grep { clean_modify($_) } split( /\|/, $str ); print join "\n", @cleaned1; print join "\n", @cleaned2; sub clean_modify { $_[0] =~ s/^\s+?|\s+?$//g; return $_[0]; } sub clean { ## don't use chomp( $_[0] ); $_[0] =~ s/^\s+//g; $_[0] =~ s/\s+$//g; }
item1 item2 item3 item4 item1 item2 item3 item4
If you tell me, I'll forget.
If you show me, I'll remember.
if you involve me, I'll understand.
--- Author unknown to me
If you show me, I'll remember.
if you involve me, I'll understand.
--- Author unknown to me
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: How to call a function on each item after a split?
by Lotus1 (Vicar) on Oct 10, 2012 at 02:40 UTC |
In Section
Seekers of Perl Wisdom