人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

perlで「タ」の置換ができないので、対処方法教えてください。

WindowsXPにインストールしたperl, v5.8.7で、「タ」の置換を行いたいのですが、
なぜかできません。

その他の文字はできます。

ソースですが、


$line ="タチツテト";
$before = "タ";
$after = "た";

$line =~ s/$before/$after/;

print $line;

です。

ソースは、SJISで書いてます。

よろしくお願いします。

●質問者: samasuya
●カテゴリ:ウェブ制作
✍キーワード:Perl print SJIS WindowsXP インストール
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● perlcodesample
●60ポイント

正規表現ではShift-JISは正しく扱えません。

日本語を正しく扱いたい場合は、Perlが文字を扱うときの内部形式にデコード

する必要があります。

use encoding 'sjis'; は以下のような内容を自動で行ってくれます。

#!/usr/bin/perl
use strict;
use warnings;
use Encode; # decode, encode 関数を使うため。

# ソースコードがShift-JISの場合は、文字列リテラルもShift-JISになります。
my $line ="タチツテト";
my $before = "タ";
my $after = "た";

# Shift-JISからPerlの内部形式にデコードします。
$line = decode( 'shift-jis', $line );
$before = decode( 'shift-jis', $before );
$after = decode( 'shift-jis', $after );

$line =~ s/$before/$after/;

# 出力するときは、Shift-JIS にエンコードします。
print encode( 'shift-jis', $line );

__END__
◎質問者からの返答

詳細な回答有難うございます。


自分で使うツールなので、ここまで気にしなくてもいいかな?という

感じですが、今後の参考に大変なりました、ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ