うまいぼうぶろぐ

linuxとhttpdとperlのメモ

perlで繰り返しマッチをする

文字列から数字だけ抜き出したいときとか
ex) "123foo456bar789baz000"から123,456,789,000をとりたい

/g修飾子を使ってマッチさせる。思いついた方法は2つ。

まとめて取得(リストコンテキスト)

$str = "123foo456bar789baz000";
@arr = $str =~ m/(\d+)/; 

1つずつ取得(スカラーコンテキスト)

while ($str =~ m/(\d+)/g ) {
  ## 何かの処理
}