我有一个以句号分隔的字符串,我希望将分隔的元素用作变量。
例如,如果我有
$string = "This.is.a.string";
当我说
时print $1;
我想要输出“This”,或打印$ 2输出“is”等等。
我试过了
$elements = split(/\\./, $string);
print $1;
但到目前为止没有运气。
有没有人有任何想法如何做到这一点?
答案 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]
是该数组的第一个元素。