Уже есть несколько хороших ответов, я представлю еще два, один из которых выглядит так, как вы думали, а второй с использованием CPAN
Сначала, в порядке OP: создайте анонимные подпрограммы, которые возвращают uc
или lc
своего аргумента, затем случайным образом вызовите один или другой случайный символ.
#!/usr/bin/env perl
use strict;
use warnings;
my @a = (0 .. 9, 'a' .. 'z');
my @case = (sub{lc shift},sub{uc shift});
my $x = join '', map { $case[int rand(2)]->($a[int rand @a]) } 1 .. 42;
print "$x\n";
Хорошо, теперь вы узнали о вызове функции. Для генерации вашего пароля мы кратко рассмотрим CPAN и найдем String::Random
. Это позволяет генерировать случайные строки на основе шаблонов.
#!/usr/bin/env perl
use strict;
use warnings;
use String::Random 'random_regex';
print random_regex('[a-zA-Z]{42}'), "\n";
В последний раз, когда я запускал это, я получил
LpvrMpylaaZTzmMbyBLiNQiwFZyKWWesVecvBWbLwu