#!/usr/bin/perl use strict; my $URL = "http://twitter.com/statuses/user_timeline/92623.json"; my ($DOTPLAN) = glob "~/.plan"; use JSON qw(jsonToObj); use LWP::Simple qw(get); defined (my $content = get $URL) or die "Cannot fetch $URL"; my $object = jsonToObj($content); my @selected; for my $item (0..$#$object) { push @selected, [@{$object->[$item]}{qw(relative_created_at text)}]; next if $item < 2; # always include at least three items last if $item >= 7; # never more than eight items last unless $selected[-1][0] =~ /second|minute|hour|day/; # stop at first oldish item } my $text = join "\n\n", map "$_->[0]: $_->[1]", @selected; { local *ARGV; # isolate diamond local $/; # slurp mode local $^I = "~"; # in place edit @ARGV = $DOTPLAN; # select the file to edit while (<>) { s/^(Twitter.*\n)(?:[\s\S]*?)^(Future.*\n)/$1\n$text\n\n$2/m; print; } }