将单个元素数组转换为字符串,并在 Perl 中的字符串之前添加点

Convert single element array to string with dot added before the string in Perl

我有一个只有一个元素的数组

我正在尝试将该数组元素转换为字符串,并在字符串前添加一个点

my $string = [ 'text' ];

my $convert_str = join(".", @$string);

print $convert_str;

预期的输出应该是

.text

我得到的输出没有点:

text

我本人不了解 Perl,如有错误,请提前致歉。

使用 join 仅对 2 个或更多元素的数组“起作用”,并且分隔符将插入元素之间。例如

my $string = [ 'text', 'another' ];
my $convert_str = join(".", @$string);
print $convert_str;

会给出结果text.another

如果数组中只有 1 个元素,并且想在其前面添加一个点,则可以按如下方式完成

my $string = [ 'text' ];
my $convert_str = "." . $string->[0];
print $convert_str;

在这里,我使用 $string->[0] 访问数组的第一个元素,并使用 . 连接点并将其放在字符串前面。

documentation for join() 是这样说的:

join EXPR,LIST
Joins the separate strings of LIST into a single string with fields separated by the value of EXPR, and returns that new string.

因此您需要向它传递一个字符串列表,它会在列表的元素之间插入 EXPR。您有一个包含一项的列表,因此 EXPR 无处可去,您的字符串未更改。

您可以通过在字符串中添加点来添加点。

my $convert_str = ".$string->[0]";

print $convert_str;