具有不同值的Perl变量

时间:2018-07-16 17:47:30

标签: perl

我需要以相同的格式上传名称不同的文件,如下所示: 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.txtfile_name_2018-07-16_code2.txt

我绝对没有Perl的经验,所以我什至不知道在哪里看。

2 个答案:

答案 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()的字符串,以便为您提供真正想要的任何文件。