글쎄, 그것은 데이터로 무엇을하고 싶은지에 달려 있습니다.
이 주위에 큰 while (<>) { ... }
을 가정하면, 당신은 단지 분할을 사용하여 간단한 분석을 얻을 수 있습니다 :
my @fields = split;
다음 수준은 의미
my ($date, $time, $id, $host, $from, $to, undef, $dest) = split;
(주의 비트를 추가하는 것입니다 결과를 무시하려는 경우 undef
에 할당 할 수 있습니다.
마지막으로 일반 expre를 사용하여 많은 cruft를 정리할 수 있습니다 시온. 위의 스플릿을 작은 정규 표현식과 결합하여 각 필드를 개별적으로 정리할 수도 있습니다. 물론
my ($datetime, $id, $host, $from, $to, $dest) =
/([\d-]+ [\d:]+) \s+ # date and time together
(\S+) \s+ # message id, just a block of non-whitespace
<(.*?)> \s+ # hostname in angle brackets, .*? is non-greedy slurp
\((.*?)\) \s+ # from email in parens
<(.*?)> \s+ # to email in angle brackets
\S+ \s+ # separated between to-email and dest
(\S+) # last bit, could be improved to (\w)=\[(.*?)\]
/x; # /x lets us break all of this up, so its a bit readable
, 당신은 어리 석음의 모든 종류의이 복용 유지할 수 있습니다,하지만 당신은이 분야의보다 구체적인 분석을하고 시작하는 거라면, 내가 손상됨 다음에 초기 분할로 가고 싶어 아웃 필드 구문 분석. 예 :
my ($date, $time, ...) = split;
my ($year, $month, $day) = split(/-/, $date);
my ($hour, $min, $sec) = split(/:/, $time);
my ($from_user, $from_host) = ($from =~ /< ([^\@]+) \@ (.*) >/x);
...etc...
이 질문에 너무 많은 질문이 있습니다. 한 번에 ** 특정 ** 질문을 게시하십시오. – Mat
확인. 이걸 편집해라. – MealstroM