perl:子程序的大写求值

perl:子程序的大写求值,perl,Perl,我需要将系统变量以大写形式传递给perl子例程 例如,如果变量名为VARNAME(值为'super'),我需要传递“super_MAN”。 一般来说,如果我们像下面的例子中那样使用“uc”选项,我们可以转换为大写 perl -e 'print uc"$ENV{VARNAME}\n"' 但当我们试图在子例程中传递它时,我们需要在语法中包含uc函数,并在运行时进行计算。为了模仿我尝试了下面的方法,但没有成功,我错在哪里 perl -e 'print ".uc($ENV{VARNAME})_MAN

我需要将系统变量以大写形式传递给perl子例程

例如,如果变量名为VARNAME(值为'super'),我需要传递“super_MAN”。 一般来说,如果我们像下面的例子中那样使用“uc”选项,我们可以转换为大写

 perl -e 'print uc"$ENV{VARNAME}\n"'
但当我们试图在子例程中传递它时,我们需要在语法中包含uc函数,并在运行时进行计算。为了模仿我尝试了下面的方法,但没有成功,我错在哪里

perl -e 'print ".uc($ENV{VARNAME})_MAN\n"'
.uc(super)_MAN

也欢迎其他方法/途径

从引号中去掉
uc
”,因为perl认为您需要文本字母
uc

FOO=abc perl -e 'print "." . uc($ENV{FOO}) . "_MAN\n"'
.ABC_MAN

从引号
中去掉
uc
,因为perl认为您需要文本字母
uc

FOO=abc perl -e 'print "." . uc($ENV{FOO}) . "_MAN\n"'
.ABC_MAN

你能先计算一下,
$varname=uc($ENV{varname})。'_MAN'
并将其传递到子程序中?您也应该能够在调用本身中执行此操作,
func(uc(…).\u MAN')
。而且,正如您所看到的,
uc
不能在双引号内。您可以先计算,
$varname=uc($ENV{varname})。'_MAN'
并将其传递到子程序中?您也应该能够在调用本身中执行此操作,
func(uc(…).\u MAN')
。正如您所看到的,
uc
不能在双引号内。