通过句点分割Perl字符串并将元素用作变量

时间:2017-02-17 11:48:30

标签: perl

我有一个以句号分隔的字符串,我希望将分隔的元素用作变量。

例如,如果我有

$string = "This.is.a.string";

当我说

print $1;

我想要输出“This”,或打印$ 2输出“is”等等。

我试过了

$elements = split(/\\./, $string);
print $1;

但到目前为止没有运气。

有没有人有任何想法如何做到这一点?

2 个答案:

答案 0 :(得分:4)

use strict;
use warnings;

my $string = "This.is.a.string";
my @output = split /\./, $string;

print $output[0]; # this will print 'this' where $output[1] will print 'is'

或者您甚至可以通过用空格替换点来打印字符串。

use strict;
use warnings;

my $string = "This.is.a.string";
$string =~  s/\./ /g;

print $string; # this will print 'This is a string'

旁注,只是为了告诉你哪里出错了。

split /\\./, $string;

分割是在两个正斜杠之间定义的,但是特殊字符需要通过反斜杠进行转义,您当前正在转义反斜杠而不是点。它应该是

split /\./, $string;

其次,你还没有定义$ 1所以它不知道$ 1是什么。如果你想在你的字符串中使用它,你需要告诉它例如$ 1。

use strict;
use warnings;

my $string = "This.is.a.string";
my @output = split /\./, $string;

$1 = $output[1];
print $1;

但这是不必要的,只是向您展示问题。

答案 1 :(得分:2)

应该是:

@elements = split(/\./, $string); print $elements[0];

@elements是一个数组,$elements[0]是该数组的第一个元素。