-3
  DB<2> n
  main::(/home/repsa/temper.pl:84):  my $tttdiskhumber=$myTemprecord[-1];
   DB<2> n
  main::(/home/repsa/temper.pl:87):  push(@myMainrecord,$tttdiskhumber);
   DB<2> p @myMainrecord
   t2agvio701vhost03t2adsap7011
   DB<3> p $tttdiskhumber
  hdisk6
   DB<4> n
   main::(/home/repsa/temper.pl:88): @myTemprecord=();
    DB<4> p @myMainrecord
    hdisk6o701vhost03t2adsap7011
   DB<5>

最後のプッシュが配列の最後に追加されないのはなぜですか?どんな助けでもありがたいです....

4

1 に答える 1

7

ああそうです。問題は、キャリッジ リターンを画面に送信していることです。配列内の前の要素の後にある可能性があります。

$ perl -e'print "abc", "def\r", "ghi", "\n";'
ghidef

dos2unixWindows 以外のシステムでは、事前に ( を使用して) またはファイルを読み取るときに (s/\s+\z//;の代わりに を使用して) 、行末を変換せずに Windows テキスト ファイルを読み取る可能性がありますchomp;


コメントで jordanm が示唆したように、デバッガーのxコマンドは、より優れているものを表示しますp

$ perl -d

Loading DB routines from perl5db.pl version 1.33
Editor support available.

Enter h or `h h' for help, or `man perldebug' for more help.

my @a = ("abc", "def\r", "ghi");
1;
^D
main::(-:1):    my @a = ("abc", "def\r", "ghi");
  DB<1> s
main::(-:2):    1;
  DB<1> p @a
ghidef
  DB<2> x @a
0  'abc'
1  "def\cM"
2  'ghi'
  DB<3> q
于 2013-02-09T04:15:34.930 に答える