$t->open("<$IPlist>"); замените на $t->open($_); И еще в начале цикла напишите chomp; — это уберет переводы строки из переменной $_
Я так полагаю, в файле у вас просто список IP?
Не работает, потому что вы не умеете файл открывать, присваивать переменной значение, обходить файл в цикле. Даже use strict отсутствует. Начните с переписывания указанных мною строк, и дело слегка сдвинется
open my $IPlist, '<', "iplist" or die "can't open iplist: $!";
my $username = 'admin';
while my $line (<$IPlist>)
Антон Ахмедалиев: Модифицируйте стартовый скрипт, чтобы логи писались (--log-error=/var/log/mysqld.log) или запускайте вручную из консоли. И читайте их на здоровье
Я же вам написал "внутри цикла каждая строка записывается в переменную $_". Это встроенная переменная перла и во многих случаях ее можно опускать. Посмотрите в мой пример, там строка split /\s+/, которую можно переписать как split (/\s+/, $_). Круглые скобки тут необязательны, но пусть будут
Файл /proc/mounts обрабатывается построчно, внутри цикла каждая строка записывается в переменную $_. Далее эта переменная обрабатывается регуляркой m/\S+ (\S+) (\S+)/, берутся первые три элемента строки, разделенные пробелом (\S+ один или более непробельный символ). "Захватываются" второй и третий элемент строки, что показывают круглые скобки (\S+). Вот эти элементы и попадают в переменные $fsname и $fstype. Вариант этот фиговый, мой со split() лучше.
А вообще, зачем вам это всё?
Я так полагаю, в файле у вас просто список IP?