拆分如何在这里工作?

时间:2011-08-22 02:51:20

标签: perl

$string = 'a=1;b=2';
use Data::Dumper;
@array = split("; ?", $string);
print Dumper(\@array);

输出:

$VAR1 = [
          'a=1',
          'b=2'
        ];

任何人都知道"; ?"如何在这里工作?它不是正则表达式,但与正则表达式非常相似,所以我不明白。

3 个答案:

答案 0 :(得分:3)

我认为这意味着“分号后跟可选空格(只有一个或零)”。

  

这不是正则表达式,但与正则表达式非常相似,所以我不明白。

要分割的模式参数始终被视为正则表达式(但最好不要使用字符串)。唯一的例外是“单一空间”,这意味着“在空白上拆分”

答案 1 :(得分:1)

split的第一个参数是正则表达式。所以我宁愿写split /; ?/, $string;。 当您为第一个参数使用字符串时,它只表示正则表达式可以变化,并且每次运行拆分时都必须重新编译。有关详细信息,请参阅perldoc -f split

可以阅读正则表达式; 字符“;”可选地后跟一个空格。有关详细信息,请参阅perlretut和perlreref。

答案 2 :(得分:0)

分号(;;)后跟可选(?)空格(。)。