in reply to Re-ordering data in data file

Here's a minimalistic solution:
while (<DATA>) { s/^"\d+"/'"' . ++$i . '"'/e; print; } __DATA__ "1" { "time: 1247"; "sump: 15"; } "2" { "time: 1255"; "sump: 9"; } "8" { "time: 1350"; "sump: 7"; } "5" { "time: 1600"; "sump: 3"; }

As a one-liner:

perl -i.bak -pe 's/^"\d+"/++$i; qq{"$i"}/e;' file <- Unix perl -i.bak -pe "s/^"""\d+"""/++$i; qq{"""$i"""}/e;" file <- Windows

Replies are listed 'Best First'.
Re^2: Re-ordering data in data file
by Animator (Hermit) on Jun 27, 2005 at 21:56 UTC

    I'm not sure if I should post this since it isn't a reply to the OP Question but it might be intresting (or not)...

    When I write a one-liner, which should run on multiple platforms or when I'm unsure of the platform (for example when posting it somewhere), then I never use ' or " in the code.

    Instead of using them I use qq and q, and I use the hex-values (\x22 for ", and \x27 for '). The advantage of this is that someone should only need to change the outer symbols.

    This turns your one-liner into:

    perl -i.bak -pe 's/^\x22\d+\x22/++$i; qq{\x22$i\x22}/e;' file