$line = 'Sat Jun 4 05:56:00 BST 2005 INFO: PD/ZVKK Load: Starting.';
my @fields = split / /, $line;
Now, @fields[0] contains 'Sat', @fields[1] contains 'Jun' and so on.
Flavio (perl -e 'print(scalar(reverse("\nti.xittelop\@oivalf")))')
Don't fool yourself.
| [reply] [d/l] [select] |
| [reply] |
| [reply] |
take a look at Regexp::Log, it allows to generate parametrizable regular expressions for log file parsing from a description of the fields inside.
Creating modules for new formats is very easy, just use one of the existant submodules (i.e. Regexp::Log::Common) as a template. | [reply] |
if you're just trying to grab 'entries' like Sat, Jun, 4, etc, you don't even need a regex. Look at perldoc -f split.
regexes are great, but there's way more to perl than regexes, and in my opinion, not the best way to start learning perl.
| [reply] |
I'm sure that what you want to do (whatever it is) is eminently feasible. :-) I recommend this for starters.
| [reply] |
If you use /^(.*)?:+\s(.*)?:+\s(.*)$/, then you will be able to use the variables $1, $2, $3 to access the different parts of the string. For example, try using this code:
$data = 'Sat Jun 4 05:56:00 BST 2005 INFO: PD/ZVKK Load: Starting.';
if ($data =~ /^(.*)?:+\s(.*)?:+\s(.*)$/) {
# $1 contains the string 'Sat Jun 4 05:56:00 BST 2005 INFO'
# $2 contains the string 'PD/ZVKK Load'
# $3 contains the string 'Starting'
}
Another way to do it is with split, which still involves a regex, but a much simpler one. Here is some code:
$data = 'Sat Jun 4 05:56:00 BST 2005 INFO: PD/ZVKK Load: Starting.';
@fields = split /:+\s/, $data;
# $fields[0] is 'Sat Jun 4 05:56:00 BST 2005 INFO'
# etc...
I agree, however, with the others. Next time, show some code. | [reply] [d/l] [select] |