首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl ` `split`‘不将` `split`’拆分为默认数组

Perl ` `split`‘不将` `split`’拆分为默认数组
EN

Stack Overflow用户
提问于 2017-05-24 08:47:32
回答 2查看 583关注 0票数 6

split有一个奇怪的问题,因为它在默认情况下不会将split放入默认数组中。

下面是一些玩具代码。

代码语言:javascript
复制
#!/usr/bin/perl

$A="A:B:C:D";
split (":",$A);
print $_[0];

这个不印任何东西。但是,如果我显式地拆分为默认数组,如

代码语言:javascript
复制
#!/usr/bin/perl

$A="A:B:C:D";
@_=split (":",$A);
print $_[0];

它正确地打印了A。我的perl版本是v5.22.1。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-24 08:52:01

默认情况下,split不会转到@_@_不像$_那样工作。它只适用于函数的参数。珀尔瓦说:

在子例程中,数组@_包含传递给该子例程的参数。在子例程中,@_是数组操作符弹出和移位的默认数组。

如果您使用use strictuse warnings运行您的程序,您将看到

空上下文中的拆分的无用用法

但是,如果不提供任何内容,split确实使用$_作为其第二个参数(被拆分的字符串)。但是,您必须始终将返回值用于某些内容。

票数 10
EN

Stack Overflow用户

发布于 2017-05-24 08:55:41

您必须将拆分分配给一个数组:

代码语言:javascript
复制
use strict;
use warnings;

my $string = "A:B:C:D";
my @array = split(/:/, $string);
print $array[0] . "\n";
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44153397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档