拆分不起作用(Perl)

 丁扣其 发布于 2023-02-09 11:53

我一直在尝试执行以下代码; 然而@ans最终得到了$ answer的全部内容.

$answer = "6.9 4012 top 5.6 2868 top 5.0 3686 top 4.7 5128 top 4.5 3120 top";
@ans = split('/ /',$answer);
foreach (@ans) {
    print "$_\n";
}

在这种情况下,我想基于空格分割.请问您能告诉我这段代码有什么问题吗?

1 个回答
  • 您错误地使用拆分.这将有效:

    @ans = split(' ', $answer);
    

    以及:

    @ans = split(/ /, $answer);
    

    请注意,split的第一个参数不是字符串,而是正则表达式.以下拆分表达的所有变体都给出相同的结果:

    ' ',/ /," ",m/ /,m' ',qr/ /,qr' ',qr{ }.

    的使用/str/为正则表达式是有点类似于在表达式匹配正则表达式的使用:

    my ($x) = ($str =~ /(w+)/);
    

    要么

    my ($x) = ($str =~ m/(w+)/);
    

    UPDATE:感谢@mpapec,有大约一个疑难杂症' 'VS / /来自perldoc -f split:

    作为一种特殊情况,指定空格('')的PATTERN将在空白处分割,就像没有参数的"拆分"一样.因此,"split('')"可用于模拟awk的默认行为,而"split(/ /)"将为您提供与前导空格一样多的初始空字段(空字符串).

    换句话说,split(' ', " x y ")返回('x', 'y'),但split(/ /, " x y ")返回('', 'x', 'y').

    2023-02-09 11:55 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有