请问怎样在perl中使用类似grep的语法?

请问怎样在perl中使用类似grep的语法?

前几天在几位老大的指点下,我学会了使用perl来代替awk(使用split),现在我又碰到一个GREP的问题,请指点:
#!/usr/bin/perl -w
use strict;
my $total_mem_mb = (split / /,`/usr/sbin/prtconf| grep "^Memory" `)[2];
print "$total_mem_mb \n";


现在我想去掉grep,请问在perl中,应该怎样实现呢?

翻了好几本PERL教材,还真是没找到。

我尝试这样写,但是结果是错误:
chomp ($_ = `/usr/sbin/prtconf`);
my $my_mem =/^Memory/;
print $my_mem;


======================================================
/usr/sbin/prtconf的输出如下:
bash-3.00# /usr/sbin/prtconf
System Configuration:  Sun Microsystems  i86pc
Memory size: 1024 Megabytes
............
............


QUOTE:
原帖由 jjqing 于 2008-8-22 14:54 发表
前几天在几位老大的指点下,我学会了使用perl来代替awk(使用split),现在我又碰到一个GREP的问题,请指点:
#!/usr/bin/perl -w
use strict;
my $total_mem_mb = (split / /,`/usr/sbin/prtconf| grep "^M ...



[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl -w
use strict;

my @resume=`/usr/sbin/prtconf`

print $resume[2];

或者是:

[Copy to clipboard] [ - ]
CODE:
[root@cent52 ~]#perl -e ' @a=`/usr/sbin/prtconf`; print $a[1]'
Memory size: 1024 Megabytes

我想要的,是将下面的代码,去掉grep,而能够达到同样功能的语句:
#!/usr/bin/perl -w
use strict;
my $total_mem_mb = (split / /,`/usr/sbin/prtconf| grep "^Memory" `)[2];
print "$total_mem_mb \n";

在以上代码中,我需要先使用grep来获取一行数据,然后再用split得到第2个字段,现在我想不使用grep,完全用perl来实现。

可能以前没说清楚,让大家误会了,不好意思!


[Copy to clipboard] [ - ]
CODE:
perldoc -f grep



[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl
use strict;
use warnings;
open my $file,"/usr/sbin/prtconf| " or die "Fail to exec $!";
while ( <$file> ) {
if ( /^Memory/) {
        my $size = (split )[2];
        print $size,"\n";
  last;
}
}

谢谢!


QUOTE:
原帖由 chenzq1604 于 2008-8-22 16:25 发表




#!/usr/bin/perl -w
use strict;

my @resume=`/usr/sbin/prtconf`

print $resume[2];



或者是:


[root@cent52 ~]#perl -e ' @a=`/usr/sbin/prtconf`; print $a[1]'
Memory size: 102 ...

#!/usr/bin/perl -w

use strict;
my @resume = `/usr/sbin/prtconf`;

my ($memory_size) = grep /^Memory/,@resume;

print $memory_size;
再次证明,perl讲究多条路通罗马
perl里面也有grep函数