如何用连字符连接 Perl 变量?

How to concatenate Perl variables with a hyphen?

我正在尝试用连字符连接两个或三个变量。请检查以下示例。

my $QueueName   = Support;
my $CustomerID  = abc;
my $UserCountry = India;
my $Count       = 12345;

my $Tn = $QueueName.$CustomerID.$UserCountry.$Count;

我得到以下输出:

"$Tn" = SupportabcIndia12345

但我想要这样:

$Tn = Support-abc-India-12345

您可以使用 join() 以分隔符连接列表元素,

my $Tn = join "-", $QueueName, $CustomerID, $UserCountry, $Count;

您应该使用 strictwarnings 来养成良好的编程习惯。虽然你的解决方案在技术上是有效的 Perl,但它会失败 strict 测试,因为你试图用 "barewords".

定义变量

要解决此问题,请将这两行放在代码的顶部:

use strict;
use warnings;

然后修改您的代码以符合 strict 模块的规则。

例如:

my $QueueName = Support;

应该是:

my $QueueName = 'Support';


至于连接变量,这将起作用:

my $Tn = $QueueName.'-'.$CustomerID.'-'.$UserCountry.'-'.$Count;

-或-

my $Tn = "$QueueName-$CustomerID-$UserCountry-$Count";

join 函数也将起作用:

my $Tn = join '-', $QueueName, $CustomerID, $UserCountry, $Count;


根据谁将维护您的代码,前两种方法对于没有 Perl 经验的人来说可能更易读。

这不是很好的 Perl,也不会 运行 在 use strict 下,您确实应该使用它。如果是,您会看到显示的错误。

这样写,改为:

use strict;
use warnings;

my $QueueName   = 'Support';
my $CustomerID  = 'abc';
my $UserCountry = 'India';
my $Count       = '12345';

my $Tn = "$QueueName-$CustomerID-$UserCountry-$Count";
print "$Tn\n";

你必须引用字符串。如果你想要一个连字符,你可以使用上面的方法来分配由连字符分隔的值。