如何浏览(和修改)这个Perl语句
我是Perl新手 如何解释此Perl语句如何浏览(和修改)这个Perl语句,perl,Perl,我是Perl新手 如何解释此Perl语句 my( $foo, $bar ) = split /\s+/, $foobar, 2; 我知道split函数同时分配局部变量,但我不明白整数2的作用是什么-我猜func将返回一个包含两个元素的数组 Perl贩子能给我解释一下上面的语句吗 此外,有时被拆分的字符串不包含预期的标记,这会导致foo或bar未初始化,从而在试图在代码中进一步使用它们时发出警告 如果拆分无法返回两个字符串,如何将$foo和$bar初始化为合理值空字符串?2是拆分返回的最大组件数
my( $foo, $bar ) = split /\s+/, $foobar, 2;
我知道split函数同时分配局部变量,但我不明白整数2的作用是什么-我猜func将返回一个包含两个元素的数组
Perl贩子能给我解释一下上面的语句吗
此外,有时被拆分的字符串不包含预期的标记,这会导致foo或bar未初始化,从而在试图在代码中进一步使用它们时发出警告
如果拆分无法返回两个字符串,如何将$foo和$bar初始化为合理值空字符串?2是拆分返回的最大组件数 因此,regexp/\s+/在空白块上拆分$foobar,但只拆分一次,以生成两个组件。如果没有空格,那么$bar将是未定义的 看 除了amon的方法之外,Perl还有一个definedx函数,它根据参数x是已定义的还是未定义的返回true或false,这可以在if语句中用于纠正某些未定义的情况
请参见2是split返回的最大组件数 因此,regexp/\s+/在空白块上拆分$foobar,但只拆分一次,以生成两个组件。如果没有空格,那么$bar将是未定义的 看 除了amon的方法之外,Perl还有一个definedx函数,它根据参数x是已定义的还是未定义的返回true或false,这可以在if语句中用于纠正某些未定义的情况 请参见拆分函数采用三个参数: 匹配分隔符的正则表达式,或由单个空格组成的字符串的特殊值,它修剪字符串,然后在空格处拆分,如/\s+/ 应该分开的绳子 结果片段的最大数量。有时,当您对所有字段都不感兴趣时,这是一种优化,有时您不想在每个分隔符处分割,这里就是这样 因此,拆分表达式将返回最多两个字段,但不一定是两个字段。若要为变量指定默认值,请在拆分前指定默认值,或在拆分后检查它们是否未定义,并指定默认值:
my ($foo, $bar) = ('', '');
($foo, $bar) = split ...;
或合并
(my ($foo, $bar) = ('', '')) = split ...
或
如果左侧未定义,则/=运算符在右侧分配值。for循环只是缩短代码的一种方法
您可能还希望仅在生成两个字段时才继续使用一段代码:
if ( 2 == (my ($foo, $bar) = split ...) ) {
say "foo = $foo";
say "bar = $bar";
} else {
warn "could not split!";
}
标量上下文中的列表分配计算为分配的元素数。拆分函数采用三个参数:
匹配分隔符的正则表达式,或由单个空格组成的字符串的特殊值,它修剪字符串,然后在空格处拆分,如/\s+/
应该分开的绳子
结果片段的最大数量。有时,当您对所有字段都不感兴趣时,这是一种优化,有时您不想在每个分隔符处分割,这里就是这样
因此,拆分表达式将返回最多两个字段,但不一定是两个字段。若要为变量指定默认值,请在拆分前指定默认值,或在拆分后检查它们是否未定义,并指定默认值:
my ($foo, $bar) = ('', '');
($foo, $bar) = split ...;
或合并
(my ($foo, $bar) = ('', '')) = split ...
或
如果左侧未定义,则/=运算符在右侧分配值。for循环只是缩短代码的一种方法
您可能还希望仅在生成两个字段时才继续使用一段代码:
if ( 2 == (my ($foo, $bar) = split ...) ) {
say "foo = $foo";
say "bar = $bar";
} else {
warn "could not split!";
}
标量上下文中的列表分配计算为分配的元素数。如下所述:
如果指定了LIMIT且为正数,则它表示可将EXPR拆分为的最大字段数
例如:
#!/opt/local/bin/perl
my $foobar = "A B C D";
my( $foo, $bar ) = split /\s+/, $foobar, 2;
print "\nfoo=$foo";
print "\nbar=$bar";
print "\n";
输出:
foo=A
bar=B C D
如下文所述:
如果指定了LIMIT且为正数,则它表示可将EXPR拆分为的最大字段数
例如:
#!/opt/local/bin/perl
my $foobar = "A B C D";
my( $foo, $bar ) = split /\s+/, $foobar, 2;
print "\nfoo=$foo";
print "\nbar=$bar";
print "\n";
输出:
foo=A
bar=B C D
+1.详细说明。Perl与我使用过的其他语言完全不同;$\u/=Cmon中列出了操作员。这本书很有趣+1.详细说明。Perl与我使用过的其他语言完全不同;$\u/=Cmon中列出了操作员。这本书很有趣您应该知道分割模式/\s+/不会去除前导空格,在许多情况下,您需要的实际上是“”,这是默认模式,并且做相同的事情,除了它也会去除前导空格,它模拟awk的行为。等等,等等,等等,等等。。。让我把这个弄对。你不会为谷歌而烦恼吧???????你是认真的吗?你到底是怎么得到2800点经验的?怎么做?@PP点不是一切。看那些徽章。他很受欢迎
估计数x 71。你有一个很受欢迎的问题x7。试着问几个更流行的问题:-您应该知道分割模式/\s+/不会去掉前导空格,在许多情况下,您想要的实际上是“”,这是默认模式,并且做同样的事情,除了它也会去掉前导空格,它模仿awk的行为。等等,等等,等等,等等。。。让我把这个弄对。你不会为谷歌而烦恼吧???????你是认真的吗?你到底是怎么得到2800点经验的?怎么做?@PP点不是一切。看那些徽章。他有一个很受欢迎的问题x71。你有一个很受欢迎的问题x7。试着问几个更受欢迎的问题:-