У меня есть входной файл с именем test1.txt с сотнями и тысячами имен файлов.
test word document.docx
...
...
amazing c. document.docx
1. 2. 3.45 document.docx
...
...
Что я хочу сделать, это получить имя файла и расширение из строки. Для большинства имен файлов есть только одна точка, поэтому я могу получить имя файла и ext, используя точку в качестве разделителя. Но проблема в том, что некоторые имена файлов имеют несколько точек в именах файлов. Я понятия не имею, как я могу получить расширение и имя файла из этого.
Вот мой Perl-код.
use strict;
use warnings;
print "Perl Starting ... \n\n";
open my $input_filehandle1, , '<', 'test1.txt' or die "No input Filename Found test1.txt ... \n";
while (defined(my $recordLine = <$input_filehandle1>))
{
chomp($recordLine);
my @fields = split(/\./, $recordLine);
my $arrayCount = @fields;
#if the array size is more than 2 then we encountered multiple dots
if ($arrayCount > 2)
{
print "I dont know how to get filename and ext ... $recordLine ... \n";
}
else
{
print "FileName: $fields[0] ... Ext: $fields[1] ... \n";
}
}#end while-loop
print "\nPerl End ... \n\n";
1;
Вот вывод:
Perl Starting ...
FileName: test word document ... Ext: docx ...
I dont know how to get filename and ext ... amazing c. document.docx ...
I dont know how to get filename and ext ... 1. 2. 3.45 document.docx ...
Perl End ...
Что бы я хотел получить
FileName: test word document ... Ext: docx ...
FileName: amazing c. document ... Ext: docx ...
FileName: 1. 2. 3.45 document ... Ext: docx ...