使用perl脚本显示文件夹
我有下面的代码,我的问题是我不能修改它以便在for函数之外使用$file3使用perl脚本显示文件夹,perl,Perl,我有下面的代码,我的问题是我不能修改它以便在for函数之外使用$file3 for ($i = 0; $i < scalar(@temp); $i++){ $path7 = 'path_to'.@temp[$i]; foreach $path ($path7){ opendir my ($dh3), $path7 or die $!; while ( my $file3 = readdir $dh3 ) {
for ($i = 0; $i < scalar(@temp); $i++){
$path7 = 'path_to'.@temp[$i];
foreach $path ($path7){
opendir my ($dh3), $path7 or die $!;
while ( my $file3 = readdir $dh3 ) {
next if $file3 eq '.' or $file3 eq '..';
next unless -d catfile($path7, $file3);
print "$file3\n";
}
closedir ($dh3);
}
}
($i=0;$i{
$path7='path_to'。@temp[$i];
foreach$path($path7){
opendir my($dh3),$path7或die$!;
while(my$file3=readdir$dh3){
下一步如果$file3 eq''或$file3 eq'.';
接下来是-d catfile($path7,$file3);
打印“$file3\n”;
}
closedir($3);
}
}
您的$file3
是在的while
循环中,因为您用my
声明了它。如果希望它在外部可用,请在更大的范围内声明,即在的外部
my $file3; # here!
for ( ...) {
# ...
# ...
######### no my below
while ( $file3 = readdir $dh3 ) {
# ...
}
# ...
}
请记住,在Perl中,最好在所需的最小范围内声明变量
还请注意,在while
循环之外,它将开始是未定义的,并且在第一次处理while
之后($i
为0,$path
为$path7
的值),$file3
将保留上次while
循环中的值,直到下次while
循环开始。这绝对不是,因为您的foreach
列表只有一个元素,因为$path7
是标量而不是数组。事实上,根本不需要使用foreach
循环。直接使用$path7
因为变量名而与我的解释相混淆?我也是。始终选择有意义的完整变量名,而不仅仅是附加数字。这使得维护变得非常困难。:) 您的$file3
是while
循环,因为您使用my
声明了它。如果希望它在外部可用,请在更大的范围内声明,即在
的外部
my $file3; # here!
for ( ...) {
# ...
# ...
######### no my below
while ( $file3 = readdir $dh3 ) {
# ...
}
# ...
}
请记住,在Perl中,最好在所需的最小范围内声明变量
还请注意,在while
循环之外,它将开始是未定义的,并且在第一次处理while
之后($i
为0,$path
为$path7
的值),$file3
将保留上次while
循环中的值,直到下次while
循环开始。这绝对不是,因为您的foreach
列表只有一个元素,因为$path7
是标量而不是数组。事实上,根本不需要使用foreach
循环。直接使用$path7
因为变量名而与我的解释相混淆?我也是。始终选择有意义的完整变量名,而不仅仅是附加数字。这使得维护变得非常困难。:) 您的$file3
是while
循环,因为您使用my
声明了它。如果希望它在外部可用,请在更大的范围内声明,即在
的外部
my $file3; # here!
for ( ...) {
# ...
# ...
######### no my below
while ( $file3 = readdir $dh3 ) {
# ...
}
# ...
}
请记住,在Perl中,最好在所需的最小范围内声明变量
还请注意,在while
循环之外,它将开始是未定义的,并且在第一次处理while
之后($i
为0,$path
为$path7
的值),$file3
将保留上次while
循环中的值,直到下次while
循环开始。这绝对不是,因为您的foreach
列表只有一个元素,因为$path7
是标量而不是数组。事实上,根本不需要使用foreach
循环。直接使用$path7
因为变量名而与我的解释相混淆?我也是。始终选择有意义的完整变量名,而不仅仅是附加数字。这使得维护变得非常困难。:) 您的$file3
是while
循环,因为您使用my
声明了它。如果希望它在外部可用,请在更大的范围内声明,即在
的外部
my $file3; # here!
for ( ...) {
# ...
# ...
######### no my below
while ( $file3 = readdir $dh3 ) {
# ...
}
# ...
}
请记住,在Perl中,最好在所需的最小范围内声明变量
还请注意,在while
循环之外,它将开始是未定义的,并且在第一次处理while
之后($i
为0,$path
为$path7
的值),$file3
将保留上次while
循环中的值,直到下次while
循环开始。这绝对不是,因为您的foreach
列表只有一个元素,因为$path7
是标量而不是数组。事实上,根本不需要使用foreach
循环。直接使用$path7
因为变量名而与我的解释相混淆?我也是。始终选择有意义的完整变量名,而不仅仅是附加数字。这使得维护变得非常困难。:) 那些变量名会驱使我去嗅探胶水。那些变量名会驱使我去嗅探胶水。那些变量名会驱使我去嗅探胶水。那些变量名会驱使我去嗅探胶水。我总是认为——用它的功能来称呼它。如果您有多个具有相同角色的角色,这样您就可以对它们进行编号,这就是数组的作用所在。(即使这样,我仍然认为单独处理它们是不好的形式)我不认为您可以对$path7进行deref,因为它是在前一行上组装的标量。不过,我不太确定那里的意图。@Sobrique你说得对。老实说,我没有读过代码的那一部分我总是想——用它的功能来称呼它。如果您有多个具有相同角色的角色,这样您就可以对它们进行编号,这就是数组的作用所在