無限ループを避けてwhileで正規表現マッチを試みる
正規表現にマッチする文字列をすべて取りだそうとしてwhileループを試みたとき、無限ループになってハマった。
while ( $text =~ /$regex{$maker}{item}/sm ) { #無限ループ print "match\n"; $parsed{ $+{pos} }{item_name} = $+{item_name} // ''; }
解決策はシンプルで、gオプションを付ければよかった。
while ( $text =~ /$regex{$maker}{item}/gsm ) { print "match\n"; $parsed{ $+{pos} }{item_name} = $+{item_name} // ''; }