String 如何在Perl中组合字符串中的变量
我希望将$file设置为:String 如何在Perl中组合字符串中的变量,string,perl,String,Perl,我希望将$file设置为: $name = "LPA"; $date= 39; $file = "/pathtoFile/window/$name/cavin_l/'$name'_formula_24rw$date.csv"; 但它将$file设置为: 有人能帮我找出正确的语法吗?我似乎无法理解它。一种方法是在变量名周围使用大括号,如下所示: /pathtoFile/window/LPA/cavin_l/'39.csv 此语法如中所述 与在某些she
$name = "LPA";
$date= 39;
$file = "/pathtoFile/window/$name/cavin_l/'$name'_formula_24rw$date.csv";
但它将$file设置为:
有人能帮我找出正确的语法吗?我似乎无法理解它。一种方法是在变量名周围使用大括号,如下所示:
/pathtoFile/window/LPA/cavin_l/'39.csv
此语法如中所述
与在某些shell中一样,可以将变量名括在大括号中以
从以下字母数字和下划线中消除歧义
一种方法是在变量名周围使用大括号,如下所示:
/pathtoFile/window/LPA/cavin_l/'39.csv
此语法如中所述
与在某些shell中一样,可以将变量名括在大括号中以
从以下字母数字和下划线中消除歧义
与Perl中的大多数内容一样,有许多方法可以完成相同的任务 可以使用{}定义变量名的边界 my$file1=/pathtoFile/window/$name/cavin_l/${name}\u formula_24rw$date.csv 或者,您可以使用连接来连接字符串 我的$file2=/pathtoFile/window/$name/cavin\l/$名称。_公式_24rw$日期csv 这两种方法产生相同的结果
$file = "/pathtoFile/window/$name/cavin_l/${name}_formula_24rw$date.csv";
输出
use strict;
use warnings;
my $name="LPA";
my $date="39";
my $file1="/pathtoFile/window/$name/cavin_l/${name}_formula_24rw$date.csv";
my $file2="/pathtoFile/window/$name/cavin_l/" . $name ."_formula_24rw" . $date . ".csv";
print "$file1\n$file2\n";
与Perl中的大多数内容一样,有许多方法可以完成相同的任务 可以使用{}定义变量名的边界 my$file1=/pathtoFile/window/$name/cavin_l/${name}\u formula_24rw$date.csv 或者,您可以使用连接来连接字符串 我的$file2=/pathtoFile/window/$name/cavin\l/$名称。_公式_24rw$日期csv 这两种方法产生相同的结果
$file = "/pathtoFile/window/$name/cavin_l/${name}_formula_24rw$date.csv";
输出
use strict;
use warnings;
my $name="LPA";
my $date="39";
my $file1="/pathtoFile/window/$name/cavin_l/${name}_formula_24rw$date.csv";
my $file2="/pathtoFile/window/$name/cavin_l/" . $name ."_formula_24rw" . $date . ".csv";
print "$file1\n$file2\n";
这个。。。在字符串中插入变量。然后问题是,在您的尝试中,变量名没有被清晰地描述,解释器最终会寻找
/pathtoFile/window/LPA/cavin_l/LPA_formula_24rw39.csv
/pathtoFile/window/LPA/cavin_l/LPA_formula_24rw39.csv
也就是说,包$name中的变量_formula_24rw;这是因为由于历史原因,$文件中$name之后的“after a variable name so”仍然是::。因为没有这样的变量,所以最后是$date的第一个“值”,然后是$date的值
最重要的收获:使用警告;我会抓到这个的。试着跑
$name::_formula_24rw
它会打印出来
在串联中使用未初始化的值$name::_formula_24rw。或串在
请始终保持使用警告;严格使用,;在节目开始时
因此,要么使用${…},其中{}分隔变量名
use warnings;
use strict;
my $name = "LPA";
my $date= 39;
my $file = "/pathtoFile/window/$name/cavin_l/'$name'_formula_24rw$date.csv";
或者用不同的弦把它拼凑起来
my $file = "/pathtoFile/window/$name/cavin_l/${name}_formula_24rw$date.csv";
这个。。。在字符串中插入变量。然后问题是,在您的尝试中,变量名没有被清晰地描述,解释器最终会寻找
/pathtoFile/window/LPA/cavin_l/LPA_formula_24rw39.csv
/pathtoFile/window/LPA/cavin_l/LPA_formula_24rw39.csv
也就是说,包$name中的变量_formula_24rw;这是因为由于历史原因,$文件中$name之后的“after a variable name so”仍然是::。因为没有这样的变量,所以最后是$date的第一个“值”,然后是$date的值
最重要的收获:使用警告;我会抓到这个的。试着跑
$name::_formula_24rw
它会打印出来
在串联中使用未初始化的值$name::_formula_24rw。或串在
请始终保持使用警告;严格使用,;在节目开始时
因此,要么使用${…},其中{}分隔变量名
use warnings;
use strict;
my $name = "LPA";
my $date= 39;
my $file = "/pathtoFile/window/$name/cavin_l/'$name'_formula_24rw$date.csv";
或者用不同的弦把它拼凑起来
my $file = "/pathtoFile/window/$name/cavin_l/${name}_formula_24rw$date.csv";
你成了过时的“报价包分隔符”的牺牲品 $name''u formula_24被解释为$name::_formula24,由于该变量未定义,因此将插入空字符串 你应该把它改成
my $file = '/pathtoFile/window/'
. $name . '/cavin_l/' . $name . '_formula_24rw' . "$date.csv";
引用佩尔达先生的话:
Perl中有两个包分隔符:双冒号::和
单引号'。普通标识符可以以
双冒号,可以包含由双冒号分隔的多个部分
科隆。单引号有类似的规则,但有例外
它们在标识符末尾不合法:即,
$foo和$foo'bar是合法的,但$foo'bar不是
你成了过时的“报价包分隔符”的牺牲品 $name''u formula_24被解释为$name::_formula24,由于该变量未定义,因此将插入空字符串 你应该把它改成
my $file = '/pathtoFile/window/'
. $name . '/cavin_l/' . $name . '_formula_24rw' . "$date.csv";
引用佩尔达先生的话:
Perl中有两个包分隔符:双冒号::和
单引号'。普通标识符可以以
双冒号,可以包含由双冒号分隔的多个部分
科隆。单引号有类似的规则,但有例外
它们在标识符末尾不合法:即,
$foo和$foo'bar是合法的,但$foo'bar不是