Hi Sunita,

On Fri, Dec 02, 2011 at 04:39:20AM -0500, sunita.prad...@emc.com wrote:
> > 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 ?
>

There is nothing wrong with your map function, you only forgot the tell
what was matched like this [ Please not * ^^^^ * addition to your code] :

my @sympd_dev_list = map {$_ =~ s/^\/\S+\s+([0-9A-F]{4}).+/$1/;$_ }
@sympd_list;

^^^^
         print $_ for @sympd_dev_list;  # added just to display
@sympd_dev_list

 OUTPUT
========
0BE0
0BE1
0BE2
0BE3
201A

-- 
Tim

Reply via email to