Bill Harpley wrote:
[2009-01-23 09:20:48,719]TRACE [server-1] [http-80-5] [email protected]
:090123-092048567:f5825 (SetCallForwardStatusImpl.java:call:54) -
RequestId [81e80] SetCallForwardStatus.REQ { accountNumber:=W12345,
phoneNumber:=12121212121, onBusyStatus:=true, busyCurrent:=voicemail,
onNoAnswerStatus:=false, noAnswerCurent:=voicemail,
onUncondStatus:=false, uncondCurrent:=voicemail }
Is an entry divided into multiple lines? If so, and if the entries are
separated by one or more empty lines, you probably want to enable
paragraph mode.
http://perldoc.perl.org/perlvar.html#$INPUT_RECORD_SEPARATOR
chomp(@list=<DATA>);
It seems to be unnecessary to read the whole log file into an array.
chomp()ing seems to be unnecessary, too.
$entry =~ /\[([a-z0-9]{5})\]/;
You'd better check whether the regex matches.
local $/ = ''; # paragraph mode
while ( my $entry = <DATA> ) {
if ( $entry =~ /\[([a-z0-9]{5})]/ ) {
print "$1\n";
}
}
The first thing that puzzles me is that it obviously extracting the
RequestId substring correctly, it seems to complain about the "$1\n"
expression in line 16.
This looks quite OK to me and I am baffled why I am getting this
message.
Probably because your code splits each entry into multiple @list elements.
The other thing that puzzles me is that there can only be a single
REQ/RES pair in the file with a given ID. So the RequestID should not
appear more than twice in the
The output list. Yet there are many instances where the RequestID
appears more than twice.
$1 retains its value from the latest successful match until the next
time the regex matches successfully.
--
Gunnar Hjalmarsson
Email: http://www.gunnar.cc/cgi-bin/contact.pl
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/