Perl Hackers Hub
第46回 Perl 5.26で変わること(2)
この記事を読むのに必要な時間:およそ 1 分
前回の
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
プラグマを利用したうえで,
- 注6)
- 「Shift_
JIS - Wikipedia 」の 「2バイト目が5C等になりうることによる問題」 をご覧ください。
正規表現中の{の扱い
正規表現中に,{
が存在していると,{
をすべてエスケープしてください。
$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
- 注7)
- この修正については5.
26のリリース直前に autoconf
コマンドを壊してしまうことが発覚したため,Perl 5. 26では応急処置を施したうえでリリースされ, 開発版のPerl 5. 27. 1ではいったんこの変更を取り下げて警告が出る状態に戻しています。
<続きの
本誌最新号をチェック!
WEB+DB PRESS Vol.128
2022年4月23日発売
B5判/160ページ
定価1,628円
(本体1,480円+税10%)
ISBN978-4-297-12789-3
- 特集1
演習で慣れる!
データベース入門
SQL操作,テーブル設計,分析用データ処理 - 特集2
クラウド構築ツールの大本命!
ゼロから学ぶTerraform - 特集3
チャットやIssueでちゃんと伝えたい!
エンジニアのための英語
バックナンバー
Perl Hackers Hub
- 第71回 ISUCONの実装から最近のPerlを学ぶ ―わかりやすく変更しやすいコードを実現する考え方と方法(2)
- 第71回 ISUCONの実装から最近のPerlを学ぶ ―わかりやすく変更しやすいコードを実現する考え方と方法(1)
- 第70回 Raisin入門 ―Rest APIマイクロフレームワークを使ってみよう!(2)
- 第70回 Raisin入門 ―Rest APIマイクロフレームワークを使ってみよう!(1)
- 第69回 表形式データを操るUNIXシェル型Perl製コマンド群 ―ビッグデータ時代の汎用的なデータ整備と分析のために(2)
- 第69回 表形式データを操るUNIXシェル型Perl製コマンド群 ―ビッグデータ時代の汎用的なデータ整備と分析のために(1)
- 第68回 他言語のライブラリをPerlに移植する(2)
- 第68回 他言語のライブラリをPerlに移植する(1)
- 第67回 GitHub APIによるチーム開発の効率化 ―基本操作から,GitHub Webhooksの活用まで(2)
- 第67回 GitHub APIによるチーム開発の効率化 ―基本操作から,GitHub Webhooksの活用まで(1)