我需要以相同的格式上传名称不同的文件,如下所示:
file_name_yyyy-mm-dd_code.txt
如何在Perl中编写它?
现在我可以这样做:
#!/usr/bin/perl
use warnings;
use strict;
use Config::Simple;
use File::Basename;
use Getopt::Long;
use Pod::Usage;
use Net::Google::Drive::Simple;
use POSIX 'strftime';
use Storable;
# my $date = strftime '%m-%d-%Y', localtime;
# for testing purpose, use specific date
my $date = '2018-07-16';
my $code;
# $code will change
my $gd = Net::Google::Drive::Simple->new();
my ($p1, $folder) = $gd->children("Test");
$folder = <folder id>;
$gd->file_upload("testfile_${date}_${code}.txt", $folder);
,它会将这种格式的文件上传到perl
文件的同一文件夹中:
file_name_yyyy-mm-dd.txt
但它不会上传这种格式的文件(我需要这样做):file_name_yyyy-mm-dd_somecode.txt
例如:
file_name_2018-07-16_code1.txt
或file_name_2018-07-16_code2.txt
我绝对没有Perl的经验,所以我什至不知道在哪里看。
答案 0 :(得分:5)
问题在于,
ast_obj = eval(d)
"file_name_$date_$code.txt"
是有效的变量名,但不是您想要的变量名。像这样用花括号勾出标识符
$date_
或者您可以像这样使用"file_name_${date}_${code}.txt"
sprintf
产生相同的结果
答案 1 :(得分:1)
您仍然不太清楚想要的内容,但是我想知道您是否在寻找glob()
。
for my $file (glob("file_name_${date}_*.txt")) {
$gd->file_upload($file, $folder);
}
您可以调整传递给glob()
的字符串,以便为您提供真正想要的任何文件。