我正在尝试从预定路径和变量中创建一个文件路径,该变量是预先确定的路径中的文件夹。
路径的预定部分是/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";
}
答案 0 :(得分:8)
您似乎在$target_name
末尾有换行符。所以:
chomp $target_name;
如果这不起作用(因为您可能从Windows文件中获得\r\n
):
$target_name =~ s/\s+\z//;
答案 1 :(得分:0)
看起来$ target_name最后有一个换行符。检查子程序调用者的参数。
(编辑:)如果换行总是在那里,您可以使用chop
删除换行符。
chop $target_name;