Isn't this all as simple as a split on each element? Something like: @sympd_dev_list = map { (split(/\s+/, $_)[1] } @sympd_list;
<img src="http://www.gnome.org/friends/banners/associate.png" alt="Become a Friend of GNOME" border="0" /> ________________________________ From: "sunita.prad...@emc.com" <sunita.prad...@emc.com> To: beginners@perl.org Sent: Friday, December 2, 2011 3:09 PM Subject: issue with perl map function Hi All My array @sympd_list has following lines : -------------------- /dev/sdd 0BE0 07F:0 08C:D0 Unprotected N/Grp'd RW 500 /dev/sde 0BE1 07F:0 07A:C0 Unprotected N/Grp'd RW 500 /dev/sdf 0BE2 07F:0 08D:C0 Unprotected N/Grp'd RW 500 /dev/sdg 0BE3 07F:0 07B:D0 Unprotected N/Grp'd RW 500 /dev/sdj 201A 07H:0 07A:D5 Unprotected N/Grp'd RW 3 --------------------------- I want second column in another array : 0BE0 0BE1 0BE2 0BE3 201A I used map function with pattern matching as >>> my @sympd_dev_list = map {$_ =~ s/^\/\S+\s+([0-9A-F]{4}).+/$1/ } @sympd_list; I do not get correct output in map function . But if I use same pattern matching in a foreach loop , then I get right output . Could anyone tell me what is wrong in my map function ? -Sunita