thans for the reply.
I modify the program a bit , the $cmd output looks like:
========
Ident Symbolic Numeric Slot Type Status
DF-1A 01A 1 1 DISK Online
FA-4A 04A 4 4 FibreChannel Online
FA-13A 13A 13 13 FibreChannel Online
DF-16A 16A 16 16 DISK Online
the code is below:
==============
my $cmd = "/usr/symcli/bin/symcfg -sid 0133 list -dir all";
open (SYMCFG, " $cmd |" ) or die "cannot open $!\n";
while ( <SYMCFG> ) {
print $_ if /FibreChannel\s+Online/ ;
my ( $ident, $fa , $type, $status ) = (split /\s+/ )[0,1,4,5] if /
FibreChannel\s+Online\s+$/ ;
print "$ident $fa $type $status \n" if defined $status ;
}
close SYMCFG ;
then when run it:
bash-2.03# ./emc_device_matching_to_fa2.pl
FA-4A 04A 4 4 FibreChannel Online
FA-4A 4 FibreChannel
FA-13A 13A 13 13 FibreChannel Online
FA-13A 13 FibreChannel
if I chane the line:
my ( $ident, $fa , $type, $status ) = (split )[0,1,4,5] if /
FibreChannel\s+Online\s+$/ ;
then I got the correct results.
FA-4A 04A 4 4 FibreChannel Online
FA-4A 04A FibreChannel Online
FA-13A 13A 13 13 FibreChannel Online
FA-13A 13A FibreChannel Online
FA-4B 04B 20 4 FibreChannel Online
FA-4B 04B FibreChannel Online
so why the differience with split vs split /\s+/ ? thanks.
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/