perl – 强制成为标量
发布时间:2020-12-15 22:05:22 所属栏目:大数据 来源:网络整理
导读:#!/usr/bin/perluse Modern::Perl;while (){ chomp;say reverse; } 上面的代码不起作用,但是当我改变第二行时说标量反转;然后它工作正常.为什么我需要强制它明确地成为标量?不能Perl DWIM? 解决方法 如果我理解文档正确,则反向通常在列表上运行.在不带参数
#!/usr/bin/perl use Modern::Perl; while (<>) { chomp; say reverse; } 上面的代码不起作用,但是当我改变第二行时说标量反转;然后它工作正常.为什么我需要强制它明确地成为标量?不能Perl DWIM? 解决方法
如果我理解文档正确,则反向通常在列表上运行.在不带参数的列表上下文中,它返回一个空列表,默认情况下不会将其分配到任何位置.在你的例子中,说输出不变的$_;
强制反向进入标量上下文会改变其行为并使其成为反向字符串,并默认使用$_.因为可以用来打印列表和标量,所以它不会强制它的参数进入标量上下文. Perl可能做DWIM,只是给定值“I”. 在以下情况下反转的细分: #!/usr/bin/env perl use strict; use v5.12; my $inscalar = "foo bar"; # `reverse` is in list context,$in is coerced to a single-element list my @outlist = reverse $inscalar; # `reverse` is in scalar context,so it reverses strings my $outscalar = reverse $inscalar; say join(" | ",@outlist); # prints "foo bar" say $outscalar; # prints "rab oof" # the "normal" behaviour of `reverse` my @inlist = qw(foo bar); @outlist = reverse @inlist; say join(" | ",@outlist); # prints "bar | foo" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |