Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在perl中获取变量名及其值_Regex_Perl - Fatal编程技术网

Regex 在perl中获取变量名及其值

Regex 在perl中获取变量名及其值,regex,perl,Regex,Perl,我正在编写一个perl脚本,它现在变得非常大。我只想打印所有变量名及其相应的值,例如我的脚本 $filename = "vivek.html"; $name = "$0"; $lang = "perl"; ($dynamic_var) = $filecontent =~ /([\w\=\-\ ]+)(?=<)/; 这远远不是一个好的做法(您应该使用自己的哈希),但您可以查看%main::哈希,它存储了所有包(全局)变量,并且似乎您只使用它们 my %vars; BEGIN { @va

我正在编写一个perl脚本,它现在变得非常大。
我只想打印所有变量名及其相应的值,例如我的脚本

$filename = "vivek.html";
$name = "$0";
$lang = "perl";
($dynamic_var) = $filecontent =~ /([\w\=\-\ ]+)(?=<)/;

这远远不是一个好的做法(您应该使用自己的哈希),但您可以查看
%main::
哈希,它存储了所有包(全局)变量,并且似乎您只使用它们

my %vars;
BEGIN {
  @vars{keys %main::} = ();
}

# begin of your script
$filename = "vivek.html";
$name = "$0";
$lang = "perl";
# end of your script

print "\$$_==>$$_\n" 
  for sort grep { !exists $vars{$_} } keys %main::;

将所有变量声明为哈希元素,然后打印每个键/值对。但我不知道脚本中使用了多少个变量。要将所有变量声明为哈希元素,我必须搜索每个变量名。因此,很难搜索每个变量名,而您只需执行
foreach(键%vars)
并获取所有变量?除此之外,获取所有变量取决于它们的类型和范围(词法、全局/包等)。在最好的情况下,您必须深入研究符号表和低级处理。你只有(全局)标量吗?
my %vars;
BEGIN {
  @vars{keys %main::} = ();
}

# begin of your script
$filename = "vivek.html";
$name = "$0";
$lang = "perl";
# end of your script

print "\$$_==>$$_\n" 
  for sort grep { !exists $vars{$_} } keys %main::;