表达式:
構文 | 意味 |
if ( 文字列 =~ / pattern/) | 「文字列」与「pattern」匹配 |
if ( 文字列 !~ / pattern/) | 与上相反 |
文字 | 意味 |
/ | 转义 |
^ | 开头 |
. | 任意一个非换行符 |
$ | 末尾 |
表現 | 正規表現上の意味 |
/w | 英字、数字、アンダースコア。[a-zA-Z0-9_] に同じ。 |
/W | 英字、数字、アンダースコア以外の文字。[^a-zA-Z0-9_] に同じ。 |
/d | 数字。[0-9] に同じ。 |
/D | 数字以外の文字。[^0-9] に同じ。 |
/t | タブ |
/r | リターン(復帰文字) |
/n | 改行 |
/f | Linefeed 换页号 |
/s | 空格。与[ /r/t/n/f]
匹配 |
/S | 空格以外的文字。[^ /r/t/n/f]
|
/a | アラーム(ベル) |
/d | バックスペース |
/e | エスケープ |
/0 + 数字 | 8進法で表すASCII文字。( ex. /033, /040 など ) |
/x + 英数字 | 16進法で表すASCII文字。( ex. /x1b, /x00 など ) |
/c[ | コントロール文字 |
/l | 次の1文字を小文字にする |
/u | 次の1文字を大文字にする |
/L | /Eまでの文字列を小文字にする |
/U | /Eまでの文字列を大文字にする |
/E | 変更の終わり |
/Q | /Eまでの文字列で正規表現のメタ文字を文字にみなす |
/b | 単語の境界にマッチする |
/B | 単語の境界以外にマッチする |
/A | 文字列の最初にマッチする。メタ文字 ^ に同じ。 |
/Z | 文字列の最後にマッチする。メタ文字 $ に同じ。 |
$ + 数字 | グループ化したパターンを後で参照する。( ex. $1, $2, $3, ... ) |
/ + 数字 | 上記に同じ。( ex. /1, /2, /3, ... ) |
$& | マッチした文字列全体 |
$` | マッチした文字列の前にあるすべての文字列 |
$' | マッチした文字列の後にあるすべての文字列 |
匹配置换:
$word = "This is a pen.";
$word =~ s/pen/book/;
print "$word
/n";
<出力結果>
This is a book.
$_ = "This is a pen.";
s/pen/book/;
print "$_
/n";
<出力結果>
This is a book.
注:默认
$url = 'http://www.kent-web.com/bbs/file/';
$url =~ s/
//bbs
//file
/////chat
//data
//
/;
↓ 次のように記述することが可能。(エスケープしない分、書きやすくなる)
$url = 'http://www.kent-web.com/bbs/file/';
$url =~ s|/bbs/file/|/chat/data/|;
修飾子 | 意味 |
g | 匹配全行 |
i | 不分大小写 |
o | 只展开一次 |
m | 多行操作 |
s | 单行 |
x | 扩展型 |
e |
▽例文(1)
$word = 'aaaaaa';
$word =~ s/a/A/;
print "$word
/n";
<出力結果(1)>
Aaaaaa
▽例文(2)
: g修飾子を使う場合
$word = 'aaaaaa';
$word =~ s/a/A/g;
print "$word
/n";
<出力結果(2)>
AAAAAA
$word = "this is 100 yen.";
$word =~ s/(
/d+)/$price = $1*2/e;
print "this is $price yen.
/n";
<出力結果>
this is 200 yen.
注:上例使100变成2倍
$word = 'apple';
$word =~ tr/a-z/A-Z/s;
print "$word
/n";
<出力結果>
APLE
注:删除重复的字母
$word = "apple:banana:orange";
@word = split(/:/, $word);
print "@word
/n";
<出力結果>
apple banana orange
@word = ("apple", "banana", "orange");
$word = join ":", @word;
print "$word
/n";
<出力結果>
apple:banana:orange
函数:
$x = 80;
$y = 55;
$z = 75;
&answer;
sub answer {
$total = $x + $y + $z;
$mean = $total / 3;
print "
合計点数は$total
点で、平均点数は$mean
点です。/n";
}
<出力結果>
合計点数は210点で、平均点数は70点です。
&answer(80, 55, 75);
sub answer {
($x, $y, $z) = @_;
$total = $x + $y + $z;
$mean = $total / 3;
print "
合計点数は$total
点で、平均点数は$mean
点です。/n";
}
<出力結果>
合計点数は210点で、平均点数は70点です。
注:参数
($total, $mean) = &answer(80, 55, 75);
print "
合計点数は$total
点で、平均点数は$mean
点です。/n";
sub answer {
($x, $y, $z) = @_;
$total = $x + $y + $z;
$mean = $total / 3;
return ($total, $mean);
}
<出力結果>
合計点数は210点で、平均点数は70点です。
1| $word = "
晴れ";
2| &yesterday;
3| print "
今日は$word
です。/n";
4|
5| sub yesterday {
6| $word = "
雨";
7| print "
昨日は$word
でした。/n";
8| }
<実行結果>
昨日は雨でした。
今日は雨です。
注:局部变量的使用
1| $word = "
晴れ";
2| &yesterday;
3| print "
今日は$word
です。/n";
4|
5| sub yesterday {
6| my $word = "
雨";
7| print "
昨日は$word
でした。/n";
8| }
<実行結果>
昨日は雨でした。
今日は晴れです。
注:my的使用
$word = "
晴れ";
&today;
sub today {
my $word = "
雨";
&yesterday;
print "
今日は$word
です。/n";
}
sub yesterday {
print "
昨日は$word
でした。/n";
}
<実行結果>
昨日は晴れでした。
今日は雨です。
字符串检索
$str = "ABCDEF";
$sub = "CD";
$find = index ($str, $sub);
if ($find >= 0) {
$find++;
print "先頭から$find番目に見つかりました。
/n";
} else {
print "見つかりませんでした。
/n";
}
<出力結果>
先頭から3番目に見つかりました。
$str = "apple orange banana";
$sub = "a";
while ( ( $find = index ($str, $sub, $find ) ) >= 0 ) {
$find++;
print "$find番目に発見。
/n";
}
<出力結果>
1番目に発見。
9番目に発見。
15番目に発見。
17番目に発見。
19番目に発見。
$word = "milktea";
$str = substr($word, 0, 4);
print "$str
/n";
<出力結果>
milk
$word = "tea";
substr($word, 0, 0) = "milk";
print "$word
/n";
<出力結果>
milktea
$word = "milktea";
substr($word, 0, 4) = "lemon";
print "$word
/n";
<出力結果>
lemontea
$word = "milktea";
substr($word, 0, 4) = "";
print "$word
/n";
<出力結果>
tea
$word = "milktea";
substr($word, -3, 3) = "";
print "$word
/n";
<出力結果>
milk
コード | 意味 |
%c | 文字 |
%s | 文字列 |
%d | 10進整数 |
%e | 浮動小数点数(指数形式) |
%f | 浮動小数点数(固定小数点形式) |
%e | 浮動小数点数 |
%o | 8進整数 |
%x | 16進整数 |
%X | 16進整数(大文字使用) |
$hour = 5;
$min = 12;
$sec = 6;
$time = sprintf("%02d:%02d:%02d", $hour,$min,$sec);
print "$time
/n";
<実行結果>
05:12:06
目录操作:
opendir(DIR, "/home/");
@file = readdir(DIR);
closedir(DIR);
foreach (@file) {
print "$_
/n";
}
注:列出/home下列的所有文件