> 千葉市中央区長洲 > 藤原 誠 臼> Perlのmodule呼び出しの際 臼> スカラーで返ってくるはずのところが配列で返ってきてしまっていた 臼> ということなのでしょうか? 確かに説明不充分の気がして、多分配列ということではなくて単に ポインターの問題かなと思って、短いものを用意して見たのですが、 karin.namazu.org Linux/2.2.19 perl 5.6.1 手元の機械 NetBSD/maccpc 1.6T perl 5.6.1 で同じ結果になりません。euc の必要があるので base64 にしたい ところですが jis で送ります。実行するなら sjis/euc にて保存し て下さい。 (何か勘違いしているかなぁ) --- (藤原)
#!/usr/pkg/bin/perl
use NKF;
use strict;
my $nkf_opt = "-jmXZ1";
sub a ($$) {
my ($contref, $opt) = @_;
$$contref = NKF::nkf($opt, $$contref);
}
sub b ($$) {
my ($contref, $opt) = @_;
$contref = [NKF::nkf($opt, $$contref)];
}
sub c ($$) {
my ($contref, $opt) = @_;
my $cont = NKF::nkf($opt, $$contref);
$$contref = $cont;
}
sub print_ ($$) {
my ($label,$contref) = @_;
print "($label) ".$$contref."\n";
print 'hex: '.unpack('h4',substr($$contref,0,2)),"\n";
}
sub main() {
my $a_string = "きょうはいいお天気です";
my $contref = \$a_string;
a($contref,$nkf_opt);
print_('a',$contref);
my $b_string = "きょうはいいお天気です"; # "別の字の方がいいか ?";
$contref = \$b_string;
b($contref,$nkf_opt);
print_('b',$contref);
my $c_string = "きょうはいいお天気です";
$contref = \$c_string;
c($contref,$nkf_opt);
print_('c',$contref);
}
main();
__END__
【手元】 NetBSD 1.6T/macppc perl 5.6.1
ttyp8:makoto@harry 15:00:04/030730(~/perl/practice)> perl NKF
(a) きょうはいいお天気です
hex: b142
(b) きょうはいいお天気です
hex: 4ada
(c) きょうはいいお天気です
hex: b142
ttyp8:makoto@harry 15:00:44/030730(~/perl/practice)> perl -d:DProf NKF
(a) vars
hex: 6716
(b) きょうはいいお天気です
hex: 4ada
(c) 2
hex: 23
ttyp8:makoto@harry 15:00:46/030730(~/perl/practice)>
【karin】 Linux 2.2.19, perl 5.6.1
makoto@karin:~$ pwd
/home/makoto
makoto@karin:~$ perl NKF
(a) きょうはいいお天気です
hex: b142
(b) きょうはいいお天気です
hex: 4ada
(c) きょうはいいお天気です
hex: b142
makoto@karin:~$ perl -d:DProf NKF
(a) きょうはいいお天気です
hex: b142
(b) きょうはいいお天気です
hex: 4ada
(c) きょうはいいお天気です
hex: b142