perl基本语法
正则表达式
#!/user/bin/perl
$_="aabbccaa";
if(/(aa)?(bb)(cc)\1/){
print "XXXX\n"
}
$_="bbccaa";
if(/(aa)?(bb)(cc)\1/){
print "XXXX\n";
}
else{
print "XXXX\n";
}
?表示匹配0次或者1次,\1引用前面第一个分组(aa),如果不存在,\1无效果
打印结果如下:
XXXX
YYYY
#!/user/bin/perl
$_="bbccbb";
if(/(?:aa)?(bb)(cc)\1/){
print "XXXX\n"
}
?:表示不捕获第一个分组(aa),打印结果:
XXXX
#!/user/bin/perl
$_="aabbaadddd";
if(/(?<a1>aa)(?<a2>bb)$+{a1}/){
print "$+{a1}\n"
}
$_="cccaabbaadddd";
if(/bb/){
print "$`\n";
print "$&\n";
print "$'\n";
}
打印值为
aa
cccaa
bb
aadddd
安装模块
sudo cpanm --mirror http://mirrors.163.com/cpan --mirror-only 模块名称
%和$变量
https://blog.youkuaiyun.com/weixin_33802505/article/details/91920090
sys_wait_h
#!/usr/bin/perl
#use POSIX ":sys_wait_h";
my $a=10;
for($i=1;$i<=3;$i++){
my $pid=fork();
if (!defined($pid)) {
print "Error in fork: $!";
exit 1;
}
if ($pid == 0 ) {
if($i==1){
sleep(9);
$b1=$a+1;
print "$b1\t";
exit 0;
}
elsif($i==2){
sleep(5);
$b2=$a+10;
print "$b2\t";
exit 0;
}
else{
sleep(3);
$b3=$a+100;
print "$b3\t";
exit 0;
}
}
}
print "~~~~~~~~~~split~~~~~~~~~~~\n";
while (($collect = waitpid(-1, WNOHANG)) > 0) {
1;
}