我是Perl的新手,我试图通过Perl脚本下载链接,如下所示:
use strict;
use warnings;
use Cwd qw(abs_path);
use File::Path qw(make_path remove_tree);
use LWP::UserAgent();
use LWP::Simple;
use HTML::LinkExtor;
my $path = abs_path();
print "please provide input link from above for example https://ftp.ncbi.nlm.nih.gov/genomes/ASSEMBLY_REPORTS/prokaryote_type_strain_report.txt\n";
defined(my $link = <>) or die "unable to take arguments from command line $!";
my $string = "$link";
$string =~ s/(.*)\///;
my $text_file = print $';
getstore($link, "$path/links_ncbi/$text_file") or die "unable to get required text file $!\n";
rename("$path/links_ncbi/1", "$path/links_ncbi/$'") or die "unable to rename text file $!\n";
它完成了将所需文本文件下载到所需目录中的工作,但是当我尝试使用重命名功能对它进行重命名时,它也做了,但是我总是在文本文件名后面出现一个问号,如下所示:
prokaryote_type_strain_report.txt?
我检查了文件的常数,但是唯一的是“?”,我无法找出发生这种情况的原因,因此我寻求您的指导,请告诉我为什么发生这种情况以及如何对其进行排序。我也尝试了以下解决方案:
vim +'set ff=unix | x' test.pl
和
dos2unix test.pl
另外,我尝试了
sed -i 's/\r$//' test.pl
正如前面的问题中提到的解决方案那样,但该解决方案是专门针对bash脚本的,但是在Perl脚本上尝试过却没有用。
我也尝试检查它并执行以下操作:
print qq{rename("$path/links_ncbi/1", "$path/links_ncbi/$'")} or die "unable to rename text file $!\n";
但是一切似乎都很好,请告诉我我在哪里做错了,为什么会这样?重命名文件时出现,非常需要您的帮助,我们将不胜感激。谢谢。
这是我尝试的解决方案的链接。
您$link
包含换行符,问号只是此类不可打印字符的占位符。
尝试 chomp($link);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句