There's one obvious bug, and a number of style or best practice issues. I'll list the ones I see, including the actual bug:
In script-line order:
- use strict; (Absent.)
- use warnings; (Absent.)
- use DateTime; (But you never use it in the script)
- use IO::File; (But you never use it in the script)
- Your open's should be using the 3-arg version as a matter of habit.
- foreach $line (<LOGFILE>) { (Better to use a while loop; foreach will slurp the file. Also, $line is an undeclared package global, with global scope. Use a lexical (my) instead.)
- ($stream, $timedate) = split("\t"); (split, in the absence of a parameter supplying a string to split, will split the contents of $_, which isn't what you want. I'm sure you probably intended split /\t/, $line. Also, you should be using lexicals for $stream and $timedate. Also, is your string tab delimited, or would \s be more appropriate?)
- Have you verified that your pattern matches are successful, or just assuming they are?
- Are you getting an exception "file not opened", or silent failure?
- warnings would have warned you that the bareword file could conflict with a future version of Perl. Use upper-case by convention for bareword filehandles, or better, use lexical file handles.
Of all of these issues, the most significant is your use of split, which is splitting $_ by default, instead of $line, as you intend. Consequently, $stream and $timedate don't contain anything useful. Fix this issue, and then put in some error checking to ensure that your pattern matches are successful. That would have helped you to catch the misuse of split bug too, because with the split bug the pattern matches can't possibly be successful either.
One final note: You might be happy with a module like Text::Template, or minimally, a HERE doc, rather than a bunch of print statements with XML tags interspersed. Update: ...and you probably ought to be protecting your XML output from contamination with illegal characters.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.