前回の
encodingプラグマの仕様変更とその対策
Perl 5.encoding
プラグマの仕様変更もその一つです。
従来はencoding
プラグマにエンコーディングを渡しておけば、
# 日本語Windows環境でShift_JISのままコードを書いても、
# encodingを使えば正規表現などを正しく扱えた
use encoding "cp932";
my $string = "表示";
$string =~ s/表/掲/; # プラグマなしだと5C問題[6]でエラー
print length($string); # 2
この挙動はPerl 5.
ただし、Filter
オプションを使えば、
use encoding "cp932", Filter => 1;
もっとも、utf8
プラグマを利用したうえで、
正規表現中の{の扱い
正規表現中に、{
が存在していると、{
をすべてエスケープしてください。
$foo =~ /\d{1,10}/; # OK
$foo =~ /\d{1}/; # OK
$foo =~ /$foo{bar}/; # OK
$foo =~ /$foo{}/; # 5.26ではエラー
$foo =~ /foo{/; # 5.26ではエラー
$foo =~ /foo[{]/; # OK
$foo =~ /foo\{/; # OK
$foo =~ /{}/; # これもOK
<続きの
本誌最新号をチェック!
WEB+DB PRESS Vol.130
2022年8月24日発売
B5判/168ページ
定価1,628円
(本体1,480円+税10%)
ISBN978-4-297-13000-8
- 特集1
イミュータブルデータモデルで始める
実践データモデリング
業務の複雑さをシンプルに表現! - 特集2
いまはじめるFlutter
iOS/Android両対応アプリを開発してみよう - 特集3
作って学ぶWeb3
ブロックチェーン、スマートコントラクト、NFT