comm perl脚本中的换行符

comm perl脚本中的换行符,perl,comm,Perl,Comm,在两个文件名之间插入了一个换行符。 我如何避免这种情况 $diff = `comm -3 "/tmp/${PATH1U}_${SITE1}_s_${USER} /tmp/${PATH2U}_${SITE2}_s_${USER}"|wc -l`; 这是执行时的错误消息: comm:“/tmp/file1\n/tmp/file2\n”之后缺少操作数 两个问题: $USER的值以换行符结尾。你可以把它拿走。修正: chomp($USER); 您正在通过一条非常长且不正确的路径,而不是两条。修正

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

$diff = `comm -3 "/tmp/${PATH1U}_${SITE1}_s_${USER} /tmp/${PATH2U}_${SITE2}_s_${USER}"|wc -l`;
这是执行时的错误消息:

comm:“/tmp/file1\n/tmp/file2\n”之后缺少操作数

两个问题:

  • $USER
    的值以换行符结尾。你可以把它拿走。修正:

    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`
    
两个问题:

  • $USER
    的值以换行符结尾。你可以把它拿走。修正:

    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`
    

chomp
读取后的文件名。
chomp
读取后的文件名。