나는 ~ 5000 2,400 크기의 .txt 파일을 저장하는 디렉토리가 있습니다.Perl - 첫 번째 파일 (.txt) 만 가져 오지 않고 다른 디렉토리의 파일 이름 만 가져 오는 방법?
그냥 그 디렉토리에서 하나의 파일 이름을 원합니다; 명령은 중요하지 않습니다.
파일이 처리되고 삭제됩니다.
이것은 스크립트 작업 디렉토리가 아닙니다.
의도는 다음과 같습니다
- 해당 파일을 열려면 이 그것을 읽고,
- 물건을,
- 는 연결을 해제 한 후 다음 파일로
- 루프.
내 원래의 시도는 .txt 파일 만 검사하지 않으며 하나의 파일 이름에 대해서만 ~ 5000 개의 파일 이름을 모두 가져야합니다. 아마도 너무 많은 모듈을 호출 할 것입니까?
하위는 디렉토리가 있고 파일이 있음을 확인하기위한 것이지만 내 시도가 실패했습니다. 여기서는 도움을 요청하고 있습니다.
#!/usr/bin/perl -w
use strict;
use warnings;
use CGI;
use CGI ':standard';
print CGI::header();
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
###
use vars qw(@Files $TheFile $PathToFile);
my $ListFolder = CGI::param('openthisfolder');
Get_File($ListFolder);
###
sub Get_File{
$ListFolder = shift;
unless (Verify_Empty($ListFolder)) {
opendir(DIR,$ListFolder);
@Files = grep { $_ ne '.' && $_ ne '..' } readdir(DIR);
closedir(DIR);
foreach(@Files){
$TheFile = $_;
}
#### This is where I go off to process and unlink file (sub not here) ####
$PathToFile = $ListFolder.'/'.$TheFile;
OpenFileReadPrepare($PathToFile);
#### After unlinked, the OpenFileReadPrepare sub loops back to this script.
}
else {
print qq~No more files to process~;
exit;
}
exit;
}
####
sub Verify_Empty {
$ListFolder = shift;
opendir(DIR, $ListFolder) or die "Not a directory";
return scalar(grep { $_ ne "." && $_ ne ".." } readdir(DIR)) == 0;
closedir(DIR);
}
분명히 나는이 점에서 매우 새롭다. 이 방법은 상당히 배가 고프다 고 생각하십니까? 하나의 파일 이름을 잡고 처리하는 데 많은 도움이됩니다. 안내가 잘 될 것입니다!
편집 -latest 시도
my $dir = '..';
my @files = glob "$dir/*.txt";
for (0..$#files){
$files[$_] =~ s/\.txt$//;
}
my $PathAndFile =$files[0].'.txt';
print qq~$PathAndFile~;
이 "작품"하지만, 여전히 모든 파일 이름을 가져옵니다. 지금까지 아무런 예제도 없었습니다. 내가 알아낼 때까지 오늘 같이 살거야. 아마도 나는 누군가가 더 좋은 것을 생각해 냈는지 다시 생각해 볼 것이다.
"처음"을 정의 하시겠습니까? 처음부터 끝까지 언급 할 때 순서가 중요하지 않다고 말하는 것은 매우 이상하게 들립니다. 이것은 모든 파일을 반복하고 싶다는 말의 아주 복잡한 방식일까요? – TLP
'foreach (... $ TheFile ..)'와'foreach (@Files) {$ TheFile = $ _; '대신 foreach my $ TheFile (@Files) {'를 쓰는 것을 선호합니다. 변수에 가장 작은 범위를주고'$ _ '을 사용하지 않는 이점이 있습니다. – AdrianHHH
'$ ListFolder'가 둘 다 범위 내에 있으므로'Get_File'과'Verify_Empty' 호출에 필요한 매개 변수는 필요 없습니다; 첫 번째 과제는 이미 변수에 이미 포함 된 값으로 덮어 씁니다. – AdrianHHH