Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re^2: Syslog files revisited

by stevbutt (Novice)
on Aug 02, 2012 at 23:15 UTC ( [id://985112]=note: print w/replies, xml ) Need Help??


in reply to Re: Syslog files revisited
in thread Syslog files revisited

This is certainly a move in the right direction and the date part is superb !, but it gives me the problem that the variable message at the end gets split up into an indeterminate number of csv values where if it were at least quoted I could read that as one field as the commas inside the quotes would be ignored ( I think )

Replies are listed 'Best First'.
Re^3: Syslog files revisited
by johngg (Canon) on Aug 03, 2012 at 09:11 UTC
    ... but it gives me the problem that the variable message at the end gets split up into an indeterminate number of csv values ...

    No, the third parameter to split limits the number of resultant fields so the $remainder scalar variable holds the entirety of your variable message.

    Cheers,

    JohnGG

      Thats great and thank you very much for your help. I have one further issue though. My existing code now looks like this

      #!/usr/bin/perl use 5.010; use strict; use warnings; while (my $line = <STDIN>) { chomp($line); my ( $mon, $day, $time, $dom, $login, $remainder ) = split m{:?\s+}, $line, 6; my %monthNos = do { my $no = 0; map { $_ => ++ $no } qw{ Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec }; }; my $yr = q{2012}; my $csv = sprintf q{%02d/%02d/%s %s,%s,%s,"%s"}, $day, $monthNos{ $mon }, $yr, $time, $dom, $login, $remainder; say $csv; }

      As I wanted the remainder to be in double quotes so it would read in as one field. The problem is that remainder sometimes already contains double quotes which I would like to remove or replace with single quotes

      I tried the following but it leaves be with an empty set of double quotes

      my $remainder =~ s/""\"\""/\'/g;

        Sorry to bother anyone with such trivial stuff, I played and found the the following worked

        $remainder =~ tr/"/'/d;

        Many Thanks

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://985112]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (7)
As of 2024-04-19 10:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found