如何在perl正则表达式的列表中使用逗号分割数字

时间:2012-06-22 06:41:30

标签: perl

我有一个像

这样的清单
1,2,3
11,12,14
1,6,8

我应该如何将这些数字分成

1
2
3
11
12
14
1
6
8

我试过

@num=(1,2,3
      11,12,14
      1,6,8);
$splitnum=$splitnum.','.$num;

但它不起作用。请帮帮我。

由于

2 个答案:

答案 0 :(得分:5)

您必须考虑另一种语言,因为该分配将导致perl中的语法错误。您可以通过引用字符串轻松修复它。

my @num = ("1,2,3",
           "11,12,14",
           "1,6,8");

我不知道你的其他线路意味着什么,但它仍然是错误的。 $num@num是perl中的两个不同变量,彼此无关。

你可以做的是:

@num = map split(/,/), @num;

map会将@num中的每一行拆分为逗号并返回列表。

你应该总是把

use strict;
use warnings;

在所有perl脚本中。会有错误,但他们会教你避免错误。不使用它们是一个非常糟糕的想法,它就像戴着眼罩而不是戴上头盔来保护你的头部。

答案 1 :(得分:1)

首先,split拆分字符串(而不是数组)并返回列表。 所以你的代码应该是。

my $str1="1,2,3,11,12,14,1,6,8"; 

my @num=split ',',$str1;

my $str2=join ' ',@num;

print $str2;

或者

您也可以使用正则表达式$str=~s/,/ /gm;