3 回答

TA貢獻2080條經驗 獲得超4個贊
最近也遇到了這個問題,但是有些想不通,chdir(dir)后續的程序,并沒有更改某個量,readdir還是獲取的dir的目錄流,和進入該目錄有什么關聯嗎

TA貢獻1801條經驗 獲得超16個贊
因為為了讓程序變得準確可行。
1、chdir("..");是為了在遞歸完某一子目錄后,退回到其父目錄繼續遍歷后續的普通文件或其他子目錄;如果缺少這一語句,那么while循環中的遞歸printdir將會把父目錄中后續的普通文件當作目錄來操作,從而造成“無法打開目錄”這種錯誤。
2、chdir(dir);是為了在程序剛運行時進入指定的目錄,以及接下來遞歸時進入相應子目錄;
用`pwd`提取的絕對路徑。
[gag@genomic-server tmp]$ more test1
#!/usr/bin/perl -w
# script name is test
use strict;
my $d="/home/gag";
my $now=`pwd`;
print $now,"\n";
chdir $d;
print `pwd`;print `ls`;
`touch iamhere`;
print "#######################\n";
chdir $now;print `pwd`;
`touch iamherethen`;
[gag@genomic-server tmp]$ perl test1
/home/gag/perl/tmp
/home/gag
c
cpp1
cpp2
java
perl
shell
tools
#######################
/home/gag
[gag@genomic-server tmp]$ ls
test1
[gag@genomic-server tmp]$ ls ../../
c cpp1 cpp2 iamhere iamherethen java perl shell tools

TA貢獻1797條經驗 獲得超6個贊
chdir(dir);是為了在程序剛運行時進入指定的目錄,以及接下來遞歸時進入相應子目錄;
chdir("..");是為了在遞歸完某一子目錄后,退回到其父目錄繼續遍歷后續的普通文件或其他子目錄;如果缺少這一語句,那么while循環中的遞歸printdir將會把父目錄中后續的普通文件當作目錄來操作,從而造成“無法打開目錄”這種錯誤。
【以上只是個人觀點,但愿能幫到你^_^】
- 3 回答
- 0 關注
- 359 瀏覽
添加回答
舉報