-3 perl
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>
Run Code Online (Sandbox Code Playgroud)
为什么我的最后一次推送没有附加到数组的末尾?任何帮助表示赞赏....
哦,是的.问题是你正在向屏幕发送回车.它可能跟踪数组中的前一个元素.
$ perl -e'print "abc", "def\r", "ghi", "\n";'
ghidef
Run Code Online (Sandbox Code Playgroud)
您可能在非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
Run Code Online (Sandbox Code Playgroud)