in reply to Parsing with Regular Expressions

Additionally, you might want to look at using .*? instead of .*, depending on the string you're handling.

Another option to parsing might be doing something like:

sub parse_error($) { my $error = shift; my $values = $error =~ /\[([^\]]*)\]/; my %values; foreach my $param (split /,/, $values) { my ($k, $v) = split /=/, $param; $values{$k} = $v; } return %values; }

Being right, does not endow the right to be rude; politeness costs nothing.
Being unknowing, is not the same as being stupid.
Expressing a contrary opinion, whether to the individual or the group, is more often a sign of deeper thought than of cantankerous belligerence.
Do not mistake your goals as the only goals; your opinion as the only opinion; your confidence as correctness. Saying you know better is not the same as explaining you know better.

Replies are listed 'Best First'.
Re^2: Parsing with Regular Expressions
by idsfa (Vicar) on Nov 17, 2004 at 16:45 UTC

    Or better yet, use ([^,]+) (see Death to Dot Star!).

    m/REFDATA_ERROR\[ type=([^,]+), system=([^,]+), category=([^,]+), code=([^\]]+) \]/x; # The /x added for readability

    The intelligent reader will judge for himself. Without examining the facts fully and fairly, there is no way of knowing whether vox populi is really vox dei, or merely vox asinorum. -- Cyrus H. Gordon