1

我有一个类似的清单

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;

但它没有用。请帮我。

谢谢

4

2 回答 2

5

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

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

我不知道你的另一条线是什么意思,但它仍然是错误的。$numand@num是 perl 中的两个不同的变量,彼此无关。

你可以做的是:

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

map@num将用逗号分割每一行并返回列表。

你应该总是把

use strict;
use warnings;

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

于 2012-06-22T06:55:33.990 回答
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

于 2012-06-22T06:50:56.800 回答