带有虚拟占位符的 Perl 赋值
在我使用过的其他语言(如 Erlang 和 Python)中,如果我要分割字符串并且不关心其中一个字段,我可以使用下划线占位符。我在 Perl 中尝试过:
(_,$id) = split('=',$fields[1]);
但出现以下错误:
无法修改 ./generate_datasets.pl 第 17 行“);”附近列表赋值中的常量项
由于编译错误,./generate_datasets.pl 的执行中止。
Perl 是否有类似的模式,我可以使用它而不是创建无用的临时变量?
In other languages I've used like Erlang and Python, if I am splitting a string and don't care about one of the fields, I can use an underscore placeholder. I tried this in Perl:
(_,$id) = split('=',$fields[1]);
But I get the following error:
Can't modify constant item in list assignment at ./generate_datasets.pl line 17, near ");"
Execution of ./generate_datasets.pl aborted due to compilation errors.
Does Perl have a similar such pattern that I could use instead of creating a useless temporary variables?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
undef
在 Perl 中具有相同的用途。undef
serves the same purpose in Perl.如果您使用 Slices,您甚至不需要占位
符:
You don't even need placeholders if you use Slices:
Prints:
您可以分配给
(undef)
。您甚至可以使用
my (undef)
。您还可以使用列表切片。
You can assign to
(undef)
.You can even use
my (undef)
.You could also use a list slice.
只是为了解释为什么您会收到所看到的特定错误...
_
是一个内部 Perl 变量,可在stat
命令中使用来指示“同一文件”正如我们在之前的stat
调用中使用的那样”。这样,Perl 使用缓存的 stat 数据结构,并且不会进行另一个 stat 调用。该文件句柄是一个常量值,无法写入。该变量存储在与
$_
和@_
相同的 typeglob 中。请参阅 perldoc stat。
And just to explain why you get the particular error that you see...
_
is a internal Perl variable that can be used in thestat
command to indicate "the same file as we used in the previousstat
call". That way Perl uses a cached stat data structure and doesn't make anotherstat
call.This filehandle is a constant value and can't be written to. The variable is stored in the same typeglob as
$_
and@_
.See perldoc stat.