in reply to Re^2: changing date format in and out
in thread changing date format in and out

The example that was given to you is the guts of what you are asking for.

Take the code that was given to you by mr_mischief, and save it in a file (lets call it Then just pass your input file through that, ie:

perl < infile > outfile
Although, you will probably want to change the line:
print (gmtime $_);
to read:
print scalar gmtime($_);
Or alternatively, if you want your output in local time, then:
print scalar localtime($_);
Hope this helps,

Replies are listed 'Best First'.
Re^4: changing date format in and out
by gio001 (Acolyte) on Feb 14, 2009 at 03:46 UTC
    Great, thanks a lot!
    I hope not to impose on you for a very last favor, how would it be possible to consolidate this logic into a single perl line command (a one liner)?
    I hope you can show me, thanks again!
      perl -ne 'print scalar localtime' < infile > outfile
      - the "-n" switch, causes perl to assume a "while <>" loop (see perldoc perlrun)
      - the $_ can be dropped, because it is implicit
      - there is no need to chomp, as you probably want the newline anyway

      Darren :)

        The  $_ in  localtime $_ is not optional: without it, the function returns current local time; likewise gmtime().

        The  -l (that's a small ell) command line switch may be useful: it will automatically  chomp the input record separator (IRS) on input and append the ORS on output. (IRS and ORS are both a newline by default.) As mentioned, not so important on input, but on output this gives you your converted time strings each on a separate line rather than as one (very long) line.

        >cat utimes 1111111 22222222 333333333 >perl -wMstrict -lne "print scalar localtime $_" < utimes > ltimes >perl -wMstrict -lne "print scalar gmtime $_" < utimes > gmtimes >cat ltimes Tue Jan 13 15:38:31 1970 Mon Sep 14 23:50:22 1970 Thu Jul 24 19:35:33 1980 >cat gmtimes Tue Jan 13 20:38:31 1970 Tue Sep 15 04:50:22 1970 Fri Jul 25 00:35:33 1980
        Example without  -l command line switch:
        >perl -wMstrict -ne "print scalar localtime $_" < utimes > ltimes >cat ltimes Tue Jan 13 15:38:31 1970Mon Sep 14 23:50:22 1970Thu Jul 24 19:35:33 19 +80