是否有仅一个元件抢出比做followng其他匹配的更简单的方法:

my $date = ($xml_file =~ m/(\d+)-sys_char/)[0];
# or
my $date = $1 if $xml_file =~ /(\d+)-sys_char/;

是否有指定M不返回数组,但所有的$#的比赛只是一个连结值标志,所以我可以做:

my $date = ($xml_file =~ mSOMEOPT/(\d+)-sys_char/);

从端部除去0?

有帮助吗?

解决方案

您想要的:

my ($date) = ($xml_file =~ m/(\d+)-sys_char/);

这将让你在$1 $date。至于你的问题的第二部分,有没有办法让所有的编号匹配的单一变量,但你可以让他们都变成一个这样的数组:

my @matches = ($xml_file =~ m/(\d+)-sys_char/);

这实际上是相同的语法:当匹配这样的左手侧是一个数组,则返回包含所有子匹配的阵列。第一版本使($date)成一元件阵列,投掷子匹配的程的其余部分。

其他提示

my ($date) = $xml_file =~ m/(\d+)-sys_char/;

if ( defined $date ) {

}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top