前回の
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


