
No.2ベストアンサー
- 回答日時:
ちょっと裏技的に
use Encode ;
binmode(STDOUT,":bytes") ; # バイトコードをそのまま出力させるように変更
printf "|%2s\n|",Encode::encode('cp932',"あ"); # cp932にencodeすれば、2バイト文字は「2バイト=2文字」扱いになる
既出の方法の方が汎用性はありますけど。
No.1
- 回答日時:
# 表示がくずれるので空白2文字を全角空白にしていることに注意
use strict;
use warnings;
use utf8;
use Encode;
use Encode::CJKConstants;
my @hello_list = (
'こんにちは、世界!!', 'Hello World!!',
'HELLO WORLD!!', 'こんにちは、World。',
"コンニチハ 世界.", '世界,你好!'
);
binmode STDOUT, ":encoding(utf8)";
for my $hello (@hello_list) {
my $view_length = count_view_length($hello);
my $char_length = length $hello;
my $format = '%-' . ( 32 - ( $view_length - $char_length ) ) . 's :';
printf $format, $hello;
print "\n";
}
# result。等幅フォントで見れば : (コロン)が揃っている
# こんにちは、世界!! :
# Hello World!! :
# HELLO WORLD!! :
# こんにちは、World。 :
# コンニチハ 世界. :
# 世界,你好! :
sub count_view_length {
my $str = shift;
my $view_length = 0;
for my $char ( split q{}, $str ) {
my $sjis_char = encode( 'sjis', $char );
if ( $char =~ m/\p{InBasicLatin}/ ) {
$view_length += 1;
}
elsif ( $sjis_char =~ m/^$Encode::CJKConstants::RE{SJIS_KANA}$/ ) {
$view_length += 1;
}
else {
$view_length += 2;
}
}
return $view_length;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストファイルで提出とは?
-
Perlの全角スペース 文字化け?
-
perlでリテラル値はメモリにど...
-
perlの構文でカンマの意味が分...
-
perlをバージョンアップしたら...
-
英数文字列のうちの数値を4桁に...
-
openした後、closeしないでプロ...
-
このファイルを開く方法で困っ...
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlで2次元配列をサブルーチ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
perl でエラー:Wide character...
-
MFCのコントロールにUTF-8の文...
-
【文字コード】外見上は全く同...
-
perlについての質問
-
perlで読み込むテキストの文字...
-
jcode.plのかわり
-
Jcodeによるカタカナ→ひらがな変換
-
UTF_16で取得しUTF_8で出力した...
-
CGIでメール送信で件名文字化け
-
【LaTeX】pBibTeXでのエラーの...
-
機種依存文字(株)を入力すると\...
-
数字を1桁なら半角、2桁以上...
-
UTF-16からUTF-8への変換
-
sedやperlでの2バイト文字を含...
-
printfの書式指定での2バイト文...
-
WindowsでUTF-8のPerlスクリプ...
-
EC-CUBEでの文字化け
-
デバッグ情報が文字化けする
-
{ブロック}の外でのみ use ut...
-
UTF-8のPerlから、UTF-8、EUC、...
おすすめ情報