처음에 ARGV [0]이 파일인지 디렉토리인지 확인하는 경우 정확한 결과가 적용되어 정상적으로 작동합니다. 그런 다음 하위 파일로 내려 가면 다시 시도하고 아무 것도 반환하지 않습니다. 이것은 작은 어리석은 질문처럼 보일지도 모르지만 주말에 프로그래밍과 학생에 대한 도움이 부족합니다. 때로는 새로운 눈 세트가 도움이 될 수 있습니다. 미리 감사드립니다. 이미 언급 한 바와 같이 당신은 당신의 파일 경로를 놓치고if (-f)가 작동하지 않는 이유는 무엇입니까?
#!/usr/bin/perl -w
my %hash;
my $args = @ARGV;
my $dh = $ARGV[0];
if (-f $dh) {
words($dh);
} elsif (-d $dh) {
files($dh);
}
sub words {
open(my $file, '<', $_[0]) or die 'cant open file';
while (my $line = <$file>) {
chomp $line;
@words = split(/\s+/, $line);
foreach $word (@words) {
$word =~ tr/A-Z/a-z/;
$hash{$word}++;
}
}
foreach $key (keys %hash) {
print $key. " " . $hash{$key} . "\n";
}
}
sub files {
opendir(DH, $_[0]);
my @paths = grep !/^\./, readdir(DH);
closedir(DH);
foreach (@paths) {
if (-f $_) {
print $_. "\n";
}
}
}
에 오신 것을 환영합니다 펄 및 SO :
다음은이 모듈을 사용하여 다시 작성 스크립트입니다. 상단에 ['use strict;'] (http://perldoc.perl.org/strict.html) 및 ['경고 사용;] (http://perldoc.perl.org/warnings.html)을 포함하십시오. 모든 펄 스크립트. 이것은 Perl에서 배우고 좋은 프로그래머가되기 위해해야 할 # 1 것입니다. – Miller