源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Perl命令行应用程序详解

  • 时间:2020-02-11 03:52 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Perl命令行应用程序详解
perl - Practical Extraction and Report Language,Perl有很多命令行参数,通过它可以让你的程序更简练,并且可以写出很多只有一行命令的perl。在这篇文章里我们来了解一些常用的命令行参数。 [b]命令行调用 [/b]
0+@array) ) ];
生成8位包含特殊的随机密码
[u]复制代码[/u] 代码如下:
@chars = ( "A" .. "Z", "a" .. "z", 0 .. 9, qw(! @ $ % ^ & *) ); $password = join("", @chars[ map { rand @chars } ( 1 .. 8 ) ]);
可以据用户
[u]复制代码[/u] 代码如下:
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位长度的密码
[u]复制代码[/u] 代码如下:
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模块来实现:
[u]复制代码[/u] 代码如下:
use strict; use warnings; use String::Random 'random_regex'; print random_regex('[a-zA-Z]{42}'), "\n";
使用perl in one line来完成:
[u]复制代码[/u] 代码如下:
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命令行里处理单引号 示例如下:
[u]复制代码[/u] 代码如下:
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'参数来进行控制,但其在变量环境无法使用。
[u]复制代码[/u] 代码如下:
perl -lwe "print q( i'am );" i'am perl -lwe "$b=q( didn't ); print $b"
这里却没有了输出。 解决办法: 1、使用'\''转义。
[u]复制代码[/u] 代码如下:
echo "a,b" | perl -F',' -lane 'print "'\''$F[0]'\''";' 'a'
2、使用'''的ASCII码
[u]复制代码[/u] 代码如下:
echo "a,b" | perl -F',' -lane 'print "$F[0]\047";' a' echo "a,b" | perl -F',' -lane '$sq="\047"; print "$sq$F[0]$sq";'
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部