in reply to How to call a function on each item after a split?
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; }
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
|
|---|
| 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 |