在两个文件名之间插入换行符。 我该如何避免这种情况?
$diff = `comm -3 "/tmp/${PATH1U}_${SITE1}_s_${USER} /tmp/${PATH2U}_${SITE2}_s_${USER}"|wc -l`;
这是执行时的错误消息:
comm:在`/ tmp / file1 \ n / tmp / file2 \ n'
之后缺少操作数
答案 0 :(得分:4)
两个问题:
$USER
的值以换行符结束。你可以chomp
离开它。修正:
chomp($USER);
您正在传递一条非常长且不正确的路径而不是两条路径。修正:
`comm -3 '/tmp/${PATH1U}_${SITE1}_s_${USER}' '/tmp/${PATH2U}_${SITE2}_s_${USER}' | wc -l`
但这是一种创建shell文字的hackish方式。清洁器:
use String::ShellQuote qw( shell_quote );
my $comm_cmd = shell_quote('comm', '-3',
"/tmp/${PATH1U}_${SITE1}_s_${USER}",
"/tmp/${PATH2U}_${SITE2}_s_${USER}");
`$comm_cmd | wc -l`