请问如何从一行字符中提取中指定位置的单词并作为变量值?

请问如何从一行字符中提取中指定位置的单词并作为变量值?

我想从
"vmxnet1: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4>";
这段字符中,提取出"UP"这个单词,作为my_nic_status的变量值,它的位置应该在"<"号之后,","号之前,请问应该怎样做到呢?
谢谢!

#!/usr/bin/perl -w
use strict;
my $my_ifconfig = "vmxnet1: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4>";
print "\$my_ifconfig is $my_ifconfig \n";
#以下,my_nic_status的值应该等于:在"<"号之后,","号之前,的一个单词,因此我用了以下的正则表达式
my $my_nic_status =~ /<\w+,/;
print "\$my_nic_status is $my_nic_status \n";


============================
bash-3.00# ./148
$my_ifconfig is vmxnet1: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4>
Use of uninitialized value in pattern match (m//) at ./148 line 6.
Use of uninitialized value in concatenation (.) or string at ./148 line 7.
$my_nic_status is

应该写成:

[Copy to clipboard] [ - ]
CODE:
my ($my_nic_status) = $my_ifconfig =~ /<(\w+),/;

#!/usr/bin/perl -w
use strict;
my $my_ifconfig = 'vmxnet1: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4>';
print "\$my_ifconfig is $my_ifconfig \n";

$my_ifconfig =~ m/<(\w+),/;
print "\$my_nic_status is $1 \n";
谢谢两位,搞定!
呼吁本版的中坚力量来帮帮这位临时用户,
我是没兴趣了。既不去看手册又不懂得举一反三,我这得教到猴年马月啊。
谢谢大家帮忙,刚才的测试已经通过了,现在我把代码放到正式脚本中去,又遇到了问题,请看:
system "ifconfig -a | grep flags|awk '{print \$1}' | sed '/:/s// /g'  > $my_dir/ifconfig_-a.out";
open IFCONFIG ,"$my_dir/ifconfig_-a.out";
while (<IFCONFIG> {
        chomp (my $my_nic = $_);
        chomp (my $my_ifconfig = `ifconfig  $my_nic`);
        print "\$my_ifconfig is $my_ifconfig \n";
        print "$my_nic \n";
        my ($my_nic_status) = $my_ifconfig =~ /<\w+,/m;
        print "\$my_nic_status is $my_nic_status \n";

}
close IFCONFIG;

显示的结果是:
$my_ifconfig is lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000  
lo0  
$my_nic_status is 1

现在是多行环境,因此,我用了 /<\w+,/m;,但是结果怎么就不对了,请指点,谢谢!


QUOTE:
原帖由 flw 于 2008-8-23 19:09 发表
呼吁本版的中坚力量来帮帮这位临时用户,
我是没兴趣了。既不去看手册又不懂得举一反三,我这得教到猴年马月啊。

感谢这位老大的帮忙,我是比较笨一点,但是我是有努力看过文档的,《Perl语言入门》、《精通正式表达式》我都有看,还有《Perl_by_Example_4th_Edition》等等,但是目前碰到的问题,我在文档上找不到,所以要麻烦一下大家了。

我会再仔细把这几本书看完的,谢谢各位!


QUOTE:
原帖由 jjqing 于 2008-8-23 19:10 发表
谢谢大家帮忙,刚才的测试已经通过了,现在我把代码放到正式脚本中去,又遇到了问题,请看:
system "ifconfig -a | grep flags|awk '{print \$1}' | sed '/:/s// /g'  > $my_dir/ifconfig_-a.out";
open IFC ...

实在不好意思,刚才把没注意FLW加上的那个()号,把
my ($my_nic_status) = $my_ifconfig =~ /<(\w+),/m;
写成了
my ($my_nic_status) = $my_ifconfig =~ /<\w+,/m;

所以老是出错,不好意思啊!
但一般的正则表达式你也要学习,这些都是基础