split
ожидает строку для второго аргумента, поэтому
@TemplateArray = split(/\n/, @file_array);
заканчивается так же, как
@TemplateArray = split(/\n/, scalar(@file_array));
Имейте в виду, что scalar(@file_array)
возвращает количество элементов в массиве.
@file_array = <FH>;
будет заполняться @file_array
следующим образом:
@file_array = (
"line1\n",
"line2\n",
"line3\n",
);
Другими словами, он уже разбит на строки. Если вы пытаетесь удалить завершающие символы новой строки, вы хотите заменить
@TemplateArray = split(/\n/,@file_array);
с
chomp( my @TemplateArray = @file_array );
Я не могу помочь вам исправить
@matches = split(/\n/,@output);
потому что я не знаю, что содержит $ssh
, и поэтому я не знаю, что содержит @output
.
Пожалуйста, используйте
use strict;
use warnings;