#!/usr/bin/perl -T use Config::General; use HTML::Template; use File::HomeDir; use File::Spec::Functions; use CGI qw/:standard/; use strict; use warnings; my $config_directory = catdir(File::HomeDir->my_home, ".funds"); my $funds_info_filename = catfile($config_directory, "funds.info"); my $config_filename; if (param()) { my $name = param('n'); $config_filename = catfile($config_directory, "$name.config"); } else { $config_filename = catfile($config_directory, "config"); } my %config = load_config($config_filename); my %funds_info = load_config($funds_info_filename); my $date = $funds_info{date}; my ($year, $month, $day) = split '-', $date; my @invest; my $sum = 0; # use Data::Dumper; # print Dumper(\%funds_info); for my $code (keys %{$config{fund}}) { my $data = $funds_info{$code}; my $investment = $config{fund}->{$code}{number} * $data->{net} - $config{fund}->{$code}{investment}; push @invest, { name => $data->{name}, income => sprintf("%.2f", $investment), income_positive => $investment > 0, diff => $data->{diff}, diff_positive => $data->{diff} > 0, }; $sum += $investment; } my $m_tmpl = catfile($config_directory, "m.tmpl"); my $tmpl = HTML::Template->new(filename=>$m_tmpl); $tmpl->param(YEAR=>$year); $tmpl->param(MONTH=>$month); $tmpl->param(DAY=>$day); $tmpl->param(INVESTMENT_INFO=>\@invest); $tmpl->param(TOTAL=>sprintf("%.2f", $sum)); $tmpl->param(TOTAL_POSITIVE=>$sum > 0); print header(-type=>'text/html', -charset=>'UTF-8'), start_html(-title=>"移动简报", -lang=>'zh-CN'), $tmpl->output, end_html; sub load_config { my $filename = shift; my $conf = new Config::General($filename); return $conf->getall; }