У меня есть текстовый файл, в котором перечислены служба, устройство и фильтр, здесь я перечисляю только 3 примера:
service1 device04 filter9
service2 device01 filter2
service2 device10 filter11
Я написал Perl-скрипт, который выполняет итерацию по файлу, и затем должен вывести device=device
filter=filter
в файл с именем, соответствующим сервису, которому он принадлежит, но если строка содержит дублирующий фильтр, она должна добавить устройства в тот же файл, разделенных точками с запятой. Глядя на приведенный выше пример, мне нужен результат:
service1.txt
device=device04 filter=filter9
service2.txt
device=device01 filter=filter2 ; device=device10 filter=filter11
Вот мой код:
use strict;
use warnings qw(all);
open INPUT, "<", "file.txt" or die $!;
my @Input = <INPUT>;
foreach my $item(@Input) {
my ($serv, $device, $filter) = split(/ /, $item);
chomp ($serv, $device, $filter);
push my @arr, "device==$device & filter==$filter";
open OUTPUT, ">>", "$serv.txt" or die $!;
print OUTPUT join(" ; ", @arr);
close OUTPUT;
}
Проблема, с которой я столкнулся, заключается в том, что созданы и service1.txt
, и service2.txt
, но все мои результаты неверны, см. Мой текущий результат:
service1.txt
device==device04 filter==filter9
service2.txt
device==device04 filter==filter9 ; device==device01 filter==filter2device==device04 filter==filter9 ; device==device01 filter==filter2 ; device==device10 filter==filter11
Я прошу прощения, я знаю, что это что-то глупое, но это была действительно длинная ночь, и мой мозг не может функционировать должным образом, я верю.