perl
htmlから <title>
タグのデータを取得する
- htmlファイル
...
<title>
aaa
</title>
...
- コード
print if (/<title>/.. /<\/title>/);
ファイルから n行からm行までのデータを取得する
- コード
print if (n .. m); # n, mには数字が入る
以下と同じ ( $.
は ファイルから読み込み時の現在の行数)
print if ($. == n .. $. == m); # n, mには数字が入る
雑多
特殊変数
$_ # デフォルトの入力とパターン検索のスペース
$. # ファイルから読み込み時の現在の行数
$/ # 入力時のレコード区切り文字。通常は改行。
$, # 出力時の項目区切り文字。print @xx; の時に有効
$" # 出力時の項目区切り文字。print "@xx"; の時に有効
$\ # 出力時の行末文字。print "$xx"; の後ろに付加される
$# # 出力時の数値形式。通常は"%.20g"。詳細はprintfを参照
$% # 出力時の現在のページ番号
$= # 出力時の現在のライン数
$- # 出力時の残り行数
$~ # 出力時のフォーマット名(デフォルトはハンドル名と同じ)
$^ # 出力時のヘッダフォーマット名
$| # 0以外が代入されると出力をバッファリングしなくなる。
$$ # プロセスID
$? # 最後に実行されたコマンドのステータス
$& # パターンマッチにマッチした部分文字列
$` # パターンマッチにマッチした部分の前側の文字列
$' # パターンマッチにマッチした部分の後側の文字列
$+ # パターンマッチの最後の()に対応する文字列
$*
$0 # perlスクリプトのコマンド名
$1 # パターンマッチの際の1番目の()に対応する文字列
$[ # 配列の最初の添え字。通常は0。
$] # perlのバージョン情報
$; # 高次元連想配列の添え字の区切り文字
$! # エラー番号、もしくはエラー文字列
$@ # 直前のevalコマンドのエラーメッセージ
$< # このプロセスの実ユーザーID
$> # このプロセスの実効ユーザーID
$( # このプロセスの実グループID
$) # このプロセスの実効グループID
$
$^D # デバッグフラグの値
$^F # システムファイルディスクリプタの最大値
$^I # -iオプションで指定した拡張子の名前
$^L
$^P # デバッガが使用する内部フラグ
$^T # スクリプトを実行した時刻
$^W # 警告スイッチの現在値
$^X # perl自身の起動時の名前
@_ # サブルーチンへの引数
@INC # perlライブラリ検索ディレクトリ
%INC # 読み込まれたライブラリファイルの配列
__LINE__ # スクリプト中の現在の行数
__FILE__ # スクリプトのファイル名
代入演算子
a += b; # a = a + b;
a -= b; # a = a - b;
a *= b; # a = a * b;
a /= b; # a = a / b;
a %= b; # a = a % b;
a **= b; # a = a ** b;
a &= b; # a = a & b;
a ^= b; # a = a ^ b;
a |= b; # a = a | b;
a <<= b; # a = a << b;
a >>= b; # a = a >> b;
a &&= b; # 左辺がTrueの場合に右辺の値を左辺に代入
a ||= b; # 左辺がFalseの場合に右辺の値を左辺に代入
a .= b; # a = a . b;
範囲演算子
@list = (0 .. 5); # @list = (0, 1, 2, 3, 4, 5);
for (0 .. 5) # for ($_ = 0; $_ <= 5; $_++)
フリップフロップ演算子
if (n .. m); # n行目からm行目までの行全てがtrueになる
if ($. == n .. $. == m); # ↑と同じで行番号変数($.)を省略しない書き方
if (/$str1/ .. /$str2/) # $str1から$str2までの行全てがtrueになる
正規表現
if($var =~ /$regex/) # マッチ
if($var !~ /$regex/) # マッチしない
if($var =~ /($regex)/) # マッチする文字列をグループ化
補足したグループの後方参照
$1, $2, $3, ... #( )の部分にマッチした文字列
$+ #最後にマッチした( )部分
$& #マッチした文字列全体(非推奨)
$` #マッチした文字列に先行する部分(非推奨)
$' #マッチした文字列に後続する部分(非推奨)
以下を推奨
if($var =~ /($regex)/p) # p修飾子を付ける
# 以下の変数を利用
${^MATCH} #マッチした文字列全体
${^PREMATCH} #マッチした文字列に先行する部分
${^POSTMATCH} #マッチした文字列に後続する部分
後方参照させないグループ化
if($var =~ /(?:$regex)/) # この後に$1,$2,...で参照ができない
クォート演算子
q(aa) # 'aa'
qq(aa) # "aa"
qw(a b c ) # ('a', 'b', 'c')
qx(commnad) # `command`
qr(regrex)i # compiled /regrex/i
m(regrex) # /regrex/
s(a)(b) # s/a/b/
# 区切り文字は()でなくても良い
q{aa} # q(aa)
# 以下の括弧はネスト可能
# (), <>, [], {}