2015-04-02 21 views
-1

我必須修改該命令包括隨機數,和大寫:Perl的命令來生成下殼體,上殼體和數字的STR

perl -le "print map{('a'..'z')[rand 26]} 1..8" 

我嘗試這樣迄今:

perl -le "print map{('a'..'z')[rand 26]} map{(0..9)[rand 10]} 1..12" 

它只能使字符串變小並且不會在字符串中生成任何數字

+0

你的第一行打印8個字符,但你的第二個打印12.你想8或12? – toolic 2015-04-02 01:21:06

+0

我想要12個,但是如何添加像'!'這樣的特殊字符,我試圖用逗號分隔它,但它會產生一個錯誤 – 2015-04-02 02:13:40

回答

1

將大寫字母和數字添加到您的map列表中,並將數字增加到63(52個字母加上10個數字小號加!):

perl -le "print map{('a'..'z','A'..'Z',0..9,'!')[rand 62]} 1..12" 

高爾夫的樂趣:)

perl -E"say map{(a..z,A..Z,0..9,'!')[rand 63]}a..l" 

更新時間:從8個增加到12個,並增加!

+0

另外,'perl -E'say map +(a..z,A..Z ,0..9)[rand 62],a..z'' ...打印26個隨機字符,不增加字符數(和*更快* ;-)。 – 2015-04-02 01:49:12

+1

@SinanÜnür:我喜歡最後的「a..z」obfu(加入我的高爾夫球代碼)。 – toolic 2015-04-02 12:31:42