perl – 生成动态文件名列表

perl – 生成动态文件名列表,第1张

概述几个月前我开始在perl编程,这是我在stackoverflow.com上的第一个问题.我希望我能得到解决方案. 所以我想从ftp服务器复制一些文件.文件名采用以下格式: abc_201149_cde_07_fgh_include_internal 在此示例中,数字部分每周更改,例如201149表示年= 2011年和周= 49.同样,07表示它是哪个版本. 我已将所有文件名复制到一个名为“sdk_ 几个月前我开始在perl编程,这是我在stackoverflow.com上的第一个问题.我希望我能得到解决方案.

所以我想从ftp服务器复制一些文件.文件名采用以下格式:

abc_201149_cde_07_fgh_include_internal

在此示例中,数字部分每周更改,例如201149表示年= 2011年和周= 49.同样,07表示它是哪个版本.

我已将所有文件名复制到一个名为“sdk_link.txt”的文件中,我正在从中读取每个文件名,然后复制到我的本地PC:

use Net::FTP;use file::copy;$Login = "<redacted>";$Pwd = "<redacted>";$ftpHost = "<redacted>";$ftpFolder = "/daj/dhakj/ahdakl/abc_201206_def_05";$ftp=Net::FTP->new($ftpHost,Timeout=>100);if ($ftp) {    print $ftp->message;}$ftp->login($Login,$Pwd);print $ftp->message;$ftp->cwd($ftpFolder);print $ftp->message;open file,"sdk_link.txt" or dIE $!;while($test=<file>) {    chomp($test);    #copy the file    copy("$test","/testing"); }$ftp->quit;

我想每周在windows上运行这个脚本.如何更改数字部分以便下载正确的文件?

解决方法 嗯,显而易见的答案是将模板保存在文件中,并插入正确的数字.例如:

echo abc_%s_cde_%s_fgh_include_internal |     perl -MPOSIX -nE 'say sprintf $_,strftime("%Y%U",localtime()),"07";'

输出:

abc_201207_cde_07_fgh_include_internal

因此,如果您有一个包含模板的文件,您可以使用%s插入字符串,并根据您自己的参数列表提供参数,或者根据您的喜好动态提供参数.例如.:

my $year = "2011";my $week = "49";my $ver  = "07";  # Strings or numbers does not really matteropen my $fh,'<',"sdk_link.txt" or dIE $!;while (<$fh>) {    my $file = sprintf $_,$year,$week,$ver;    copy($file,"/testing") or dIE "copy Failed for file $file: $!";}

我不太确定file :: copy :: copy是否可用于远程文件,但这是另一个问题.我相信Net::FTP :: get()可能就是你想要的.

总结

以上是内存溢出为你收集整理的perl – 生成动态文件名列表全部内容,希望文章能够帮你解决perl – 生成动态文件名列表所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1232979.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存