首页 > 解决方案 > 采用不同值的 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);

并将具有此格式的文件上传到与文件相同的文件夹中perlfile_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 的经验,所以我什至不知道去哪里找。

标签: perl

解决方案


问题是,在

"file_name_$date_$code.txt"

$date_是一个有效的变量名,但不是您想要的。用大括号描述标识符,像这样

"file_name_${date}_${code}.txt"

或者你可以使用sprintf,像这样

sprintf 'file_name_%s_%s.txt', $date, $code

产生相同的结果


推荐阅读