Perl代码,定义参数

时间:2014-12-03 01:19:31

标签: perl arguments

我有一个perl代码,但每当我运行它时,我似乎无法弄清楚如何定义第一个和第二个参数。这是代码,非常感谢。

#!/usr/bin/env perl
use Crypt::PBKDF2;

if (@ARGV < 2) {   
print "[!] Error: please specify hash (first argument) and salt (second argument)\n";
exit (1); 
} 
my $match = pack ("H*", $ARGV[0]); # TODO: check if it is of length 40 
my $salt  = pack ("H*", $ARGV[1]); # of length 8? 
my $iter  = 1000; 
my $pbkdf2 = Crypt::PBKDF2->new (hash_class => 'HMACSHA1', iterations => $iter);
my $num;
for ($num = 0; $num < 10000; $num++) {
   my $pass = sprintf ("%04d", $num);
   my $hash = $pbkdf2->PBKDF2 ($salt, $pass);
   if ($match eq $hash) {
      printf ("%s:%s:%s:%s\n", unpack ("H*", $hash), unpack ("H*", $salt), $iter, $pass);
      exit (0);
   }
}
exit (1);

2 个答案:

答案 0 :(得分:2)

如果你引用这两个论点

my $match = pack ("H*", $ARGV[0]); # TODO: check if it is of length 40 
my $salt  = pack ("H*", $ARGV[1]); # of length 8?

它们在命令行中定义。

假设您的脚本文件是script.pl 在命令行中,您需要运行

perl script.pl <match> <salt>

@ARGV是包含Perl

中命令行参数的数组

答案 1 :(得分:0)

所有Perl的特殊变量都在perldoc perlvar中定义,其中包含以下内容。

  

<强> @ARGV

     

数组@ARGV包含用于脚本的命令行参数。

如果您对如何更清楚地提出建议,我很乐意听到: - )