Finance-Bank-PSK
view release on metacpan or search on metacpan
examples/balance-gpg.pl view on Meta::CPAN
#!/usr/bin/perl
# $Id: balance-gpg.pl,v 1.1 2003/08/14 21:42:01 florian Exp $
use Finance::Bank::PSK;
use GnuPG::Interface;
use IO::File;
use IO::Handle;
use YAML qw/Load/;
use strict;
use warnings;
my $agent = Finance::Bank::PSK->new(&get_secrets);
my $result = $agent->check_balance;
my $entries = $agent->get_entries;
foreach my $account (@{$result->{accounts}}) {
printf("%11s: %25s\n", $_->[0], $account->{$_->[1]})
for(( [ qw/ Kontonummer account / ],
[ qw/ Bezeichnung name / ],
[ qw/ Waehrung currency / ]
));
printf("%11s: %25.2f\n", $_->[0], $account->{$_->[1]})
for(( [ qw/ Saldo balance / ],
[ qw/ Dispo final / ]
));
print "\n";
}
foreach my $fund (@{$result->{funds}}) {
printf("%11s: %25s\n", $_->[0], $fund->{$_->[1]})
for(( [ qw/ Depotnummer fund / ],
[ qw/ Bezeichnung name / ],
[ qw/ Waehrung currency / ]
));
printf("%11s: %25.2f\n", 'Saldo', $fund->{balance});
print "\n";
}
if(scalar @$entries) {
printf("Buchungszeilen:\n\n");
foreach my $row (@$entries) {
$row->{text} =~ s/(.{50}).*/$1.../;
printf("%7s %5s %53s %9.2f\n",
@{$row}{qw/nr value text amount/}
);
}
}
sub get_secrets {
my $secrets = '/Users/florian/bin/psk.gpg';
my $cipher = IO::File->new;
my $input = IO::Handle->new;
my $output = IO::Handle->new;
my $gnupg = GnuPG::Interface->new;
my $pid;
my $plain;
$cipher->open($secrets, 'r')
or die sprintf("Couldn't open %s\n", $secrets);
$pid = $gnupg->decrypt(handles => GnuPG::Handles->new(
stdin => $input,
stdout => $output,
));
print $input $_ while <$cipher>;
close $cipher;
close $input;
$plain = Load(join('', <$output>));
close $output;
waitpid($pid, 0);
$plain;
}
( run in 0.957 second using v1.01-cache-2.11-cpan-e1769b4cff6 )