为什么我的输出打印在两行?

时间:2011-09-08 00:06:44

标签: perl

我正在尝试从预定路径和变量中创建一个文件路径,该变量是预先确定的路径中的文件夹。

路径的预定部分是/sys/kernel/scst_tgt/targets/iscsi/

下一个文件夹是iSCSI目标的地址,如iqn.2011-08.com.solignis:datastore2

然后最后一部分就像/enabled,它是一个告诉目标状态的文件。

当我尝试打印完整路径时,变量$target_name被替换为iSCSI目标的名称。结果输出如下所示

/sys/kernel/scst_tgt/targets/iscsi/iqn.2011-08.com.solignis:datastore2
/enabled

它将启用的部分放在新行上。我无法弄清楚发生了什么

以下是我正在处理的子例程的代码:

sub target_enabled {
    my $target_name = shift;
    my $target_state_file = "/sys/kernel/scst_tgt/targets/iscsi/$target_name/enabled";
    print "$target_state_file\n";
}

2 个答案:

答案 0 :(得分:8)

您似乎在$target_name末尾有换行符。所以:

chomp $target_name;

如果这不起作用(因为您可能从Windows文件中获得\r\n):

$target_name =~ s/\s+\z//;

答案 1 :(得分:0)

看起来$ target_name最后有一个换行符。检查子程序调用者的参数。

(编辑:)如果换行总是在那里,您可以使用chop删除换行符。

chop $target_name;