Perl

如何安全地隨機化字元串中字元的順序?

  • December 20, 2016
[user@notebook ~]$ echo 'aabcd' | sed 's/\(.\)/\1\n/g' | perl -MList::Util -e 'print List::Util::shuffle <>' | perl -pe 's/\n//g';
cdaab[user@notebook ~]$ echo 'aabcd' | sed 's/\(.\)/\1\n/g' | perl -MList::Util -e 'print List::Util::shuffle <>' | perl -pe 's/\n//g';
dbaac[user@notebook ~]$ echo 'aabcd' | sed 's/\(.\)/\1\n/g' | perl -MList::Util -e 'print List::Util::shuffle <>' | perl -pe 's/\n//g';
cbada[user@notebook ~]$ echo 'aabcd' | sed 's/\(.\)/\1\n/g' | perl -MList::Util -e 'print List::Util::shuffle <>' | perl -pe 's/\n//g';
adcba[user@notebook ~]$ 

AFAIK 這是一種隨機化字元串順序的安全方法。但是可以只用一個 perl 命令來完成嗎?

這取決於您所說的“一個 perl 命令”是什麼意思。當然可以通過對您的方法進行一些重構來完成:

echo abcde | perl -MList::Util=shuffle -lpe '$_ = join "", shuffle split //'

引用自:https://unix.stackexchange.com/questions/331577