- 論壇徽章:
- 0
|
回復(fù) 7# kaixin9ok
DH是全局變量,遞歸下來的新打開的DH會覆蓋掉上一個的DH,所以結(jié)果就亂了,使用my $dh為私有變量,會限定在一定的block中,不知道解釋清楚了沒。
DH可以實現(xiàn),請試試~- #!/usr/bin/perl
- use warnings;
- use strict;
- my $file;
- chdir "/etc" or die "cannot chdir to /etc: $!";;
- #open FILE,">>/tmp/test.txt" or die "file not exists $!";
- my $dir = "/etc";
- opendir DH,$dir or die "Open dir error Directory";
- while ($file = (readdir DH)){
- next if $file =~ m/^\.(\.)?/;
- if( -d $file){
- local *DH; # 使用local將DH本地化
- &readdir_read($file);
- }
- }
- sub readdir_read{
- if( -d $_[0]){
- opendir DH,$_[0] or die "open dir error Director $!";
- while (my $file = readdir DH){
- next if $file =~ m/^\.(\.)?/;
- print $file ."\n";
- }
- }
- }
復(fù)制代碼 |
|