在两个文件名之间插入了一个换行符。我该如何避免这种情况?
$diff = `comm -3 "/tmp/${PATH1U}_${SITE1}_s_${USER} /tmp/${PATH2U}_${SITE2}_s_${USER}"|wc -l`;
这是执行时的错误消息:
comm: `/tmp/file1\n /tmp/file2\n' 后缺少操作数
两个问题:
$USER
的值以换行符结尾。你可以chomp
把它拿走。使固定:
chomp($USER);
您正在通过一条非常长且不正确的路径,而不是两条。使固定:
`comm -3 '/tmp/${PATH1U}_${SITE1}_s_${USER}' '/tmp/${PATH2U}_${SITE2}_s_${USER}' | wc -l`
但这是创建 shell 文字的一种骇人听闻的方式。清洁器:
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`