The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl
use strict;
use FindBin;
use lib "$FindBin::Bin/../lib";

use Net::Twitter::OAuth;

my $client = Net::Twitter::OAuth->new(
    consumer_key => $ENV{TWITTER_CONSUMER_KEY},
    consumer_secret => $ENV{TWITTER_CONSUMER_SECRET},
);

unless ($client->oauth->authorized) {
    # The client is not yet authorized: Do it now
    print "Authorize this app at ", $client->oauth->get_authorization_url, " and hit RET\n";
    system "open", $client->oauth->get_authorization_url;

    <STDIN>; # wait for input
    $client->oauth->request_access_token;
}

binmode STDOUT, ":utf8";

my $tweets = $client->friends_timeline;
for my $tweet (@$tweets) {
    printf "%s: %s (%s)\n", $tweet->{user}{name}, $tweet->{text}, $tweet->{created_at};
}

print "\nSomething to say: ";
binmode STDIN, ":encoding(utf-8)";
chomp(my $tweet = <STDIN>);
my $res = $client->update({ status => $tweet });

print "Tweeted: http://twitter.com/$res->{user}{screen_name}/status/$res->{id}\n";