s 代表空格
+ 代表重复一次或一次以上
s+ 代表一个或者一个以上空格
[oracle@jhoa ~]$ cat a3.pl
$command ="ls -ltr";
my ($binary,$var)=split /s+/,"$command";
print "$bibary is $binary
";
print "$var is $var
";
[oracle@jhoa ~]$ perl a3.pl
$bibary is ls
$var is -ltr
#####################################################
正则表达式
m#[|&><;]#
if ($command =~ m#[|&><;]#) {
m/<regexp>;/ 可以简写成/<regexp>;/ 略去m
[oracle@jhoa ~]$ cat a4.pl
$command = ";";
if ($command =~ m#[|&><;]#) {
print "ok
";
}
[oracle@jhoa ~]$ perl a4.pl
ok
[oracle@jhoa ~]$ cat a4.pl
$command = "&";
if ($command =~ m#[|&><;]#) {
print "ok
";
}
[oracle@jhoa ~]$ perl a4.pl
ok
[oracle@jhoa ~]$ cat a4.pl
$command = "#";
if ($command =~ m#[|&><;]#) {
print "ok
";
}
[oracle@jhoa ~]$ perl a4.pl
###########################################################
[oracle@jhoa ~]$ cat a4.pl
$command = "> | m";
if ($command =~ m#[|&><;]#) {
my @array=split /|/,"$command";
print "@array is @array:
";
}
[oracle@jhoa ~]$ perl a4.pl
@array is > m:
按| 分割,赋值给数组@array
#############################################################
$command =~ /|s*(less|grep|wc)/
匹配| 0个或多个空格 在跟less grep 或wc
##############################################################
表示单词边界:
[oracle@jhoa ~]$ cat a5.pl
$command = "lsn ";
if ($command =~/ls/ ){
print "ok
"}
;
[oracle@jhoa ~]$ perl a5.pl
[oracle@jhoa ~]$
只会匹配到ls 不会匹配lsn
#############################################################
grep m/^$binary/,@allow_command or grep m/^$binary/,@allow_command2
$binary 匹配数组元素
#######################################################################
字符正则匹配:
$var = "abccc";
if ($var =~ /ab/) {
print ("ok
");
}
数组正则匹配:
[oracle@jhoa ~]$ cat a7.pl
use strict;
use Switch;
use Sys::Hostname;
use File::Basename;
my $host = hostname;
my $prompt = "$host >";
my @allow_command=(
"/bin/cat",
"/bin/ls",
);
my @allow_command2=map {basename("$_") } @allow_command;
print "@allow_command2
";
if (grep m/ls/,@allow_command2 ) {
print "11111111111111111
";
}else {
print "2222222222222222
";}
[oracle@jhoa ~]$ perl a7.pl
cat ls
11111111111111111
此时ls 匹配数组元素
[oracle@jhoa ~]$ cat a7.pl
use strict;
use Switch;
use Sys::Hostname;
use File::Basename;
my $host = hostname;
my $prompt = "$host >";
my @allow_command=(
"/bin/cat",
"/bin/ls",
);
my @allow_command2=map {basename("$_") } @allow_command;
print "@allow_command2
";
if (grep m/lsa/,@allow_command2 ) {
print "11111111111111111
";
}else {
print "2222222222222222
";}
[oracle@jhoa ~]$ perl a7.pl
cat ls
2222222222222222
lsa 不匹配数组元素