Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.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
Perl代码,定义参数_Perl_Arguments - Fatal编程技术网

Perl代码,定义参数

Perl代码,定义参数,perl,arguments,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

我有一个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);
#/usr/bin/env perl
使用Crypt::PBKDF2;
如果(@ARGV<2){
打印“[!]错误:请指定哈希(第一个参数)和salt(第二个参数)\n”;
出口(1);
} 
我的$match=pack(“H*,$ARGV[0])#TODO:检查长度是否为40
我的$salt=pack(“H*”,$ARGV[1])#长度为8?
我的$iter=1000;
我的$pbkdf2=Crypt::pbkdf2->new(hash_类=>'HMACSHA1',迭代=>$iter);
我的$num;
对于($num=0;$num<10000;$num++){
我的$pass=sprintf(“%04d”,$num);
my$hash=$pbkdf2->pbkdf2($salt,$pass);
if($match eq$hash){
printf(“%s:%s:%s:%s\n”,解包(“H*”,$hash),解包(“H*”,$salt),$iter,$pass);
出口(0);
}
}
出口(1);

如果您引用这两个参数

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>
perlscript.pl

@ARGV是包含Perl中的命令行参数的数组,所有Perl的特殊变量都在中定义,如下所示

@ARGV

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


如果你对如何更清楚地表达这一点有什么建议,我很想听听:-)

“定义论点”没有任何意义。您是否询问如何提供/指定参数<代码>脚本8267549af37a。。。384a6dd8f900…我的意思是,我知道第一个和第二个参数要使用什么数字。我只是不知道怎么把它们放进去。谢谢你的帮助。@NinjaBanana定义了什么的论点?