comm perl脚本中的换行符

时间:2016-06-10 15:44:17

标签: perl comm

在两个文件名之间插入换行符。 我该如何避免这种情况?

$diff = `comm -3 "/tmp/${PATH1U}_${SITE1}_s_${USER} /tmp/${PATH2U}_${SITE2}_s_${USER}"|wc -l`;

这是执行时的错误消息:

  

comm:在`/ tmp / file1 \ n / tmp / file2 \ n'

之后缺少操作数

1 个答案:

答案 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`