【问题标题】:I use mkdir in Perl. It makes dir, but sometimes it adds a ? to the end of the directory name我在 Perl 中使用 mkdir。它使目录,但有时它会添加一个?到目录名称的末尾
【发布时间】:2013-04-19 21:49:14
【问题描述】:

代码如下:

foreach my $name ( @unique_gene_list ) {
    print "$name\n";
    chomp $name; 

    unless(mkdir $name, 0700) {
        die "Unable to create directory called $name\n";
    }
}     

这很有效。出于某种原因,我的一个目录的名称以 ? 结尾。我应该注意到终端窗口中显示的目录名称显示了问号。在查找器中,该目录名称的末尾没有问号。我在 MAC OS 10.7.5 上使用 Perl v.5.12.3。

【问题讨论】:

  • 尝试打印名称最后一个字符的ordprint ord substr $name, -1
  • 您也可以尝试通过 cat:ls -l | cat -vet 传递它。 -vet 打印几乎所有不可见的奇怪字符
  • 我不明白,@choroba。 ?你的意思是结果将是对某事的诊断吗?我试试看。
  • @ES55 - 你的“?”可能是一些奇怪的不可打印字符,它是列表中某些名称的一部分。 Unix shell 会将其打印为“?”
  • @DVK:非常感谢您将我介绍给cat -vet - 非常有用!

标签: perl directory mkdir


【解决方案1】:

您正在读取的文件有以 CRLF 结尾的行。您正在使用 chomp 删除 LF,但不会删除 CR(由 ^M 表示)。代替chomp;,使用s/\s+\z//;

while (<$fh>) {
   s/\s+\z//;
   ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    相关资源
    最近更新 更多