Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

$$contref = 文字列の中身 ?



>                                            千葉市中央区長洲
>                                                    藤原  誠

臼> 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