Perl 代码,定义参数

标签 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);

最佳答案

如果您引用这两个参数

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 中命令行参数的数组

关于Perl 代码,定义参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27262051/

相关文章:

带参数列表的 C++ 构造函数

c++ - 如何将unique_ptr参数传递给构造函数或函数?

perl - 是否可以像 Template Toolkit 那样安全地访问嵌套数据结构中的数据?

multithreading - 加入线程时出现 Perl 段错误

perl - 我应该如何使用 Perl 的标量范围运算符?

perl - 在 Catalyst 中使用 Cache-Control header 时如何不发送 cookie?

perl - perl 中的局部变量和全局变量

javascript - 神秘的for循环迭代

java - 如何将命令行参数添加到 Intellij 中的运行配置?

ruby-on-rails - 参数数量错误 [ex :(3 for 2)] in methods [but only pass 2]