есть скрипт который работал на red hat нормально а на Freebsd вместо результата выдает ошибки, в чем моя ошибка?#!/usr/bin/perl
open(FILE1, "/home/user/ip-email");
while (<FILE1>) {chop; split();
$ip1="$_[0]";
$ma="$_[1]";
$des="$_[2]";
open(FILE2, "/home/user/output");
while (<FILE2>) {chop; split('-');
$ip2="$_[0]";
$tr="$_[1]";
foreach ($ip1) {
if ($ma ne "") {
foreach ($ip1) {
if ($ip1 eq $ip2) {
print " $ip1, $ma, $des, $ip2, $tr, /n ";
}}}}}}отрывки от файла ip-email и output
192.168.0.1 somemail@mail.ru Description1
192.168.0.2 other@mail.ru Description2
192.168.0.3
192.168.0.4 mail_3@mail.ru Description3
192.168.0.5
192.168.0.6192.168.0.1 - 233 + 16 = 249
192.168.0.2 - 401 + 45 = 446
192.168.0.3 - 26509 + 8278 = 34787
192.168.0.4 - 802 + 9172 = 9974
192.168.0.5 - 4868 + 1665 = 6533
192.168.0.6 - 3 + 0 = 3
192.168.0.7 - 214 + 3331 = 3545
192.168.0.8 - 408 + 3599 = 4007
192.168.0.9 - 5034 + 955 = 5989на экране должен был быть вот что
192.168.0.1 somemail@mail.ru Description1 192.168.0.1 - 233 + 16 = 249
192.168.0.2 other@mail.ru Description2 192.168.0.2 - 401 + 45 = 446
192.168.0.4 mail_3@mail.ru Description3 192.168.0.4 - 802 + 9172 = 9974Результат вот какой
Use of implicit split to @_ is deprecated at ./send line 8.
Use of implicit split to @_ is deprecated at ./send line 3.
Use of uninitialized value in string at ./send line 9, <FILE2> line 1.
Use of uninitialized value in string at ./send line 10, <FILE2> line 1.
Use of uninitialized value in string at ./send line 9, <FILE2> line 2.
Use of uninitialized value in string at ./send line 10, <FILE2> line 2.
Use of uninitialized value in string at ./send line 9, <FILE2> line 3.
Use of uninitialized value in string at ./send line 10, <FILE2> line 3.
Use of uninitialized value in string at ./send line 9, <FILE2> line 5.
Use of uninitialized value in string at ./send line 10, <FILE2> line 5.
Use of uninitialized value in string at ./send line 9, <FILE2> line 6.
Use of uninitialized value in string at ./send line 10, <FILE2> line 6.
Use of uninitialized value in string at ./send line 9, <FILE2> line 7.
Use of uninitialized value in string at ./send line 10, <FILE2> line 7.
Use of uninitialized value in string at ./send line 9, <FILE2> line 9.
Use of uninitialized value in string at ./send line 10, <FILE2> line 9.
в скрипте какая-то жесть с циклами
> в скрипте какая-то жесть с цикламиа есть какие- то предложения? как исправить?
>> в скрипте какая-то жесть с циклами
> а есть какие- то предложения? как исправить?1) сформулировать задачу
2) переписать скрипт - думаю хешами тут можно уложить с пять строк и пуру циклов
>>> в скрипте какая-то жесть с циклами
>> а есть какие- то предложения? как исправить?
> 1) сформулировать задачу
> 2) переписать скрипт - думаю хешами тут можно уложить с пять строк
> и пуру цикловзадача такая
есть 2 списка, в первом ip, адрес электронной почты и описание , во втором IP и трафик.
программа должна работать так - проверить если написан электронный адрес в первом списке(есть такие записи где только ip), найти из 2-го соответствующий трафик и выводить на экран
Какие-то цикли по простой переменной, ниче не понял. Попробуй так:#!/usr/bin/perl -w
use strict;my %hash = ();
my ($fpath, $ipemail, $output) = ('/home/user', 'ip-email', 'output');
my ($ipaddr, $mail, $desc);open (IPEMAIL, "< $fpath/$ipemail") or die "Could not open $fpath/$ipemail\n";
while (<IPEMAIL>) {
($ipaddr, $mail, $desc) = split (/\s+/, $_);
if (length $mail > 0) {
$hash{ $ipaddr }{ mail } = $mail;
$hash{ $ipaddr }{ desc } = $desc;
}
}open (OUT, "< $fpath/$output");
while (<OUT>) {
my ($ipaddr, $data) = split (/\s+-\s+/, $_);
chomp ($data);
print "$ipaddr $hash{ $ipaddr }{ mail } $hash{ $ipaddr }{ desc } $ipaddr - $data\n" if exists $hash{ $ipaddr };
}
Огромное спасибо erera22, вроде работает :)
>[оверквотинг удален]
> $desc;
> }
> }
> open (OUT, "< $fpath/$output");
> while (<OUT>) {
> my ($ipaddr, $data) = split (/\s+-\s+/, $_);
> chomp ($data);
> print "$ipaddr $hash{ $ipaddr }{ mail } $hash{ $ipaddr
> }{ desc } $ipaddr - $data\n" if exists $hash{ $ipaddr };
> }