syslogからプログラム名とIPアドレスを抜き出したいと思っています。
(syslog-ngでの進入検知スクリプト)
Mar 8 10:22:01 host01 ftp(pam_unix)[8094]: authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=201.201.101.101
というログを標準入力として、以下の通り処理を流すと

while ($data = <STDIN>) {
if ($data =~ /\s(\w+)\[.*\]:.*\[([\d\.]+)\]/){
$hack = $2;
if ($1 eq $ftpd) {
$port = 21;
}elsif ($1 eq $sshd) {
$port = 22;
}else{ next;}

という感じで$1がプログラム名、$2がIPになるはずらしいんですが
どうもそうなっていないようなんです。
正直さっぱりわからないんですが
正規表現をどう変えたらいいでしょうか。