gpt4 book ai didi

perl - 在目录中移动的最佳方式是什么?

转载 作者:行者123 更新时间:2023-12-04 06:58:30 26 4
gpt4 key购买 nike

下面的两个例子都可以,还是第二个风格不好?

案例 1:停留在顶级目录并使用 catdir 访问子目录

#!/usr/bin/env perl
use warnings; use strict;

my $dir = 'my_dir_with_subdir';
my ( $count, $dh );

use File::Spec::Functions;
$count = 0;

opendir $dh, $dir or die $!;
while ( defined( my $file = readdir $dh ) ) {
next if $file =~ /^\.{1,2}$/;
my $sub_dir = catdir $dir, $file;
if ( -d $sub_dir ) {
opendir my $dh, $sub_dir or die $!;
while ( defined( my $file = readdir $dh ) ) {
next if $file =~ /^\.{1,2}$/;
$count++;
}
closedir $dh or die $!;
}
else {
$count++;
}
}

closedir $dh or die $!;
print "$count\n";

情况二:退出前切换到子目录并恢复顶级目录
use Cwd;
my $old = cwd;
$count = 0;
opendir $dh, $dir or die $!;
chdir $dir or die $!;
while ( defined( my $file = readdir $dh ) ) {
next if $file =~ /^\.{1,2}$/;
if ( -d $file ) {
opendir my $dh, $file or die $!;
chdir $file or die $!;
while ( defined( my $file = readdir $dh ) ) {
next if $file =~ /^\.{1,2}$/;
$count++;
}
closedir $dh or die $!;
chdir $dir;
}
else {
$count++;
}
}
closedir $dh or die $!;
chdir $old or die $!;
print "$count\n";

最佳答案

对于您的示例,最好更改为子目录,最后不要费心更改回原始目录。这是因为每个进程都有自己的“当前目录”,所以你的 perl 脚本改变了它自己的当前目录并不意味着 shell 的当前目录被改变了;保持不变。

如果这是更大脚本的一部分,情况就会不同;我的一般偏好是不更改目录,只是为了减少对脚本中任何点当前目录的混淆。

关于perl - 在目录中移动的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2243145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com