perl - Practical Extraction and Report Language,Perl有很多命令行参数,通过它可以让你的程序更简练,并且可以写出很多只有一行命令的perl。在这篇文章里我们来了解一些常用的命令行参数。
[b]命令行调用
[/b]
0+@array) ) ];
生成8位包含特殊的随机密码
@chars = ( "A" .. "Z", "a" .. "z", 0 .. 9, qw(! @ $ % ^ & *) );
$password = join("", @chars[ map { rand @chars } ( 1 .. 8 ) ]);
可以据用户
use strict;
use warnings;
sub random_pwd {
my $length = shift;
my @chars = (0 .. 9, 'a' .. 'z', 'A' .. 'Z');
return join '', @chars[ map rand @chars, 0 .. $length ];
}
print random_pwd(42);
生成42位长度的密码
use strict;
use warnings;
my @chars=("a".."z",0..9);
my $password="";
foreach(1..42){
my $char=$chars[int(rand(@chars))];
$char=uc($char) if rand() <0.5;
$password.=$char;
}
print $password . "\n";
-------------------------------
my @chars = ('0'..'9', 'a'..'z', 'A'..'Z');
my $passwd =
join '',
map $chars[rand(@chars)],
1..42;
调用String::Random模块来实现:
use strict;
use warnings;
use String::Random 'random_regex';
print random_regex('[a-zA-Z]{42}'), "\n";
使用perl in one line来完成:
perl -le "print map { ('a'..'z', 'A'..'Z', '0'..'9')[rand 62] } 1..42"
perl -le 'print map { ("a".."z")[rand 26] } 1..8'
perl -le 'print map { ("a".."z", 0..9)[rand 36] } 1..8'
perl -le 'print map { (q(a)..q(z))[rand(26)] } 1 .. 10'
相关问题参考:
--------------------------------------------------------------------------
Perl one-liner with single quote-perl命令行里处理单引号
示例如下:
echo "a,b" | perl -F',' -lane 'print $F[0];'
'a'
echo "a,b" | perl -F',' -lane 'print qq('$F[0]');'
[0]
echo "a,b" | perl -F',' -lane 'print q('$F[0]');'
[0]
以上三种方法都不能达到预期,可以使用'-w'参数来进行控制,但其在变量环境无法使用。
perl -lwe "print q( i'am );"
i'am
perl -lwe "$b=q( didn't ); print $b"
这里却没有了输出。
解决办法:
1、使用'\''转义。
echo "a,b" | perl -F',' -lane 'print "'\''$F[0]'\''";'
'a'
2、使用'''的ASCII码
echo "a,b" | perl -F',' -lane 'print "$F[0]\047";'
a'
echo "a,b" | perl -F',' -lane '$sq="\047"; print "$sq$F[0]$sq";'