2013-02-09 60 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