2013-02-09 66 views
-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> 

爲什麼我最後一次push不會追加到數組的末尾? 任何幫助表示讚賞....perl - push不追加到數組的末尾

+1

您應該用'x'而不是'p'在調試器中打印數據結構。 – jordanm 2013-02-09 04:10:05

+7

顯示您的代碼,而不是調試會話。 – melpomene 2013-02-09 04:13:38

+0

其實,顯示你的代碼和調試會話 – xaxxon 2013-02-10 00:22:00

回答

7

哦,它是。問題是你發送一個回車到屏幕上。它可能跟在數組中的前一個元素之後。

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

你可能不讀轉換行尾非Windows系統在Windows的文本文件,既可以提前(使用dos2unix),或者當你讀文件(使用s/\s+\z//;代替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 
+0

請原諒延遲迴復。這有助於..不知道x選項...感謝您的信息和輸入.... – user2056311 2013-02-13 20:49:04

+0

如果問題得到解決,請檢查您喜歡的答案旁邊的標記。歡迎來到StackOverflow! – ikegami 2013-02-13 21:03:57