在Perl中将变量转换为数组

3
我有一个需求需要将我的变量发送到数组中。我有类似这样的代码:
var = "abc|xyz|123";

我希望将上述值存储到数组中。
$arr[0]="abc";
$arr[1]="xyz";
$arr[2]="123";

我使用了以下方法,但是我在使用这种方式时没有得到数组大小。
$var = "abc|xyz|123";
$var =~ tr/|/\n/; # transforming "|" to new line "\n"
@a = $var;
print $a[0];

完整的转换输出只发送到一个变量中,而不是单个变量。
请在这方面帮助我。
敬礼, Sriharsha Kalluru。
4个回答

9
使用 split 函数:
@a = split(/\|/, $var);

0

你想使用分割函数

$var = 'abc|xyz|123';
@a = split '|', $var;
print $a[0];

唉,这将打印 a,因为 split 将模式视为正则表达式,而 | 是一个正则表达式元字符。(正则表达式 | 匹配空字符串或空字符串,这有点傻但在技术上是有效的正则表达式。)要修复它,您应该像 Mat 所示那样引用 |。此外,请在发布代码之前测试您的代码。 - Ilmari Karonen

0

虽然我不太确定你想做什么,但是看起来你正在试图自己解决一个已经有解决方案的问题?!

这应该可以解决问题:使用Perl split()函数

 my $data = 'Becky Alcorn,25,female,Melbourne';
 my @values = split(',', $data);

-2
你可以像这样使用正则表达式。
$var=~s/(\w+|\d+)/$data[$gg++]=$1;''/eg;

现在数组@data中保存了$var中的标量数据...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接