in reply to Re: Replacement of Bracketed Expressions for JSON output
in thread Replacement of Bracketed Expressions for JSON output

Wow, thanks for the fast reply!

I was thinking about using using s// as I will be reading in multiple file lines by line, e.g:

[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,0,28],[0,27,0,29],[0,28,0,30]

and the details of the units for the replacements are contained in:

$node,e.g.

[-1,-1,0,28],

which will be replaced by other details contained in $newnode, e.g.

[1,30,2,34],

which is being uniquely generated on the fly.

I was wondering if there is a way to have an effect of say:

$line =~ s/$node/$newnode

After which $line is printed to an output file?

Thanks again!

Replies are listed 'Best First'.
Re^3: Replacement of Bracketed Expressions for JSON output
by roboticus (Chancellor) on Feb 28, 2011 at 10:55 UTC

    Ardil:

    I think I'll have to go with ELESHEVA on this one. Sure you could do it with regexes, but the JSON module doesn't seem to difficult to work with:

    #!/usr/bin/perl use strict; use warnings; use JSON; while (my $line = <DATA>) { my $data = decode_json $line; if ($data->[0] == -1 and $data->[1] == -1 and $data->[2] == 32 and $data->[3] == 45 ) { $data = [ 1, 39, 2, 45 ]; } print encode_json($data), "\n"; } __DATA__ [-1,-1,32,45] [-1,-1,-1,-1] [-1,-1,0,28] [0,27,0,29] [0,28,0,30]

    On my machine, it produces (as expected):

    $ perl 890521.pl [1,39,2,45] [-1,-1,-1,-1] [-1,-1,0,28] [0,27,0,29] [0,28,0,30]

    Update: Fixed attribution.

    ...roboticus

    When your only tool is a hammer, all problems look like your thumb.

Re^3: Replacement of Bracketed Expressions for JSON output
by ikegami (Patriarch) on Feb 28, 2011 at 17:07 UTC