初学perl,以下代码感到费解(getopt函数)

初学perl,以下代码感到费解(getopt函数)

初学perl,以下代码感到费解(getopt函数)
sub Getopt {
  local($argumentative) = @_;
  local($_,$first,$rest);
  local($[) = 0;

  while (@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) {
     ($first,$rest) = ($1,$2);
     if (index($argumentative,$first) >= $[) {
       if ($rest ne '') {
          shift(@ARGV);
       }
       else {
          shift(@ARGV);
          $rest = shift(@ARGV);
       }
       ${"opt_$first"} = $rest;
     }
     else {
       ${"opt_$first"} = 1;
       if ($rest ne '') {
          $ARGV[0] = "-$rest";
       }
       else {
          shift(@ARGV);
       }
     }
  }
}

1;
对于以上的这段话不太理解。 ${"opt_$first"} = $rest; ${"opt_$first"} = 1;
Getopt(abc) ;
会产生三个全局变量:$opt_a,$opt_b,$opt_c;我想看到这三个全局变量里的值,我把它们打印出来,
就是打印不出来。请问程序该怎么写才能看到该值,还有上面代码破为不解,于是自己写了个test.pl
#!/usr/bin/perl
$opt_ = "" ;
$first = shift ;

print "$first\n" ;
$bb = ${"opt_$first"} ;
$cc = ${"opt_$first"} ;
print "$bb\n" ;
print "$cc\n" ;
我想输出${”opt_$first“} 的值该如何做呢?
perl test.pl aaa
输出:aaa

\n输出了,但是没有值?不解!请各位达人指教指教。
没人回应吗?.
你没有对${"opt_$first"}赋值。他哪来的值???
确实是没有赋值啊,LZ的哈.
确实是没有赋值啊,LZ的哈希哪里来的
这个函数好像是用来定义参.
这个函数好像是用来定义参数的,例如opt_x对应的参数是-x 参数名试试
两个程序之间是不能用这种.
两个程序之间是不能用这种方法共享变量的

这个话题太大了在这里说不清楚,建议楼主看看关于环境变量的资料