プロが教える店舗&オフィスのセキュリティ対策術

次のエラーが発生します。
Undefined subroutine &jcode::convf called at ./jcode.pl line 291.

カレントに、jcode.plを置いているだけでは動作するのでしょうか?

また、Jcode.pmを使った場合、
&Jcode::convert(\$test_sjis, "sjis");
と大文字にしないといけないのですが、これは仕方ないことでしょうか?
てっきり、 require './jcode.pl'と use Jcode.pmの差し替えで済むと思っていました。



#!/usr/bin/perl

require './jcode.pl';

my $test = "パソコン結構です。"; #文字化けチェック用

my $test_sjis = $test;
my $test_ujis = $test;
my $test_jis = $test;

&jcode::convert(\$test_sjis, "sjis");
&jcode::convert(\$test_ujis, "ujis");
&jcode::convert(\$test_jis, "jis");


print "\$test_sjis=[$test_sjis]\n";
print "\$test_ujis=[$test_ujis]\n";
print "\$test_jis =[$test_jis]\n";

exit;

__END__

A 回答 (2件)

ujis と言うコードはありません。



エラーの原因は、ujis と言う未定義の文字コードを指定しているためです。
これは、キット euc と指定したかったのでしょう。

また、Jcode.pm は、

Jcode::convert(・・・);

の様に使用します。Jは大文字です。
Jcode.pm は、oopに対応しているので、

Jcode->new($str)->sjis;

などと言う形式で呼び出すのが一般的かも知れません。
ただ、jcode,pl も Jcode.pm も既に過去の機能となっていまして、最近では Encode.pm の使用が推奨されています。
    • good
    • 0

291行めがどこか知らんけど、記憶では、


日本語EUC の指定は ujis ではなく "euc" のままでよかったかと。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!