- 论坛徽章:
- 0
|
回复 7# kaixin9ok
DH是全局变量,递归下来的新打开的DH会覆盖掉上一个的DH,所以结果就乱了,使用my $dh为私有变量,会限定在一定的block中,不知道解释清楚了没。
DH可以实现,请试试~- #!/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";
- }
- }
- }
复制代码 |
|