my $sigfile = new IO::File User->Home."/.signature", 'w' or die "Unable to open ~/.signature for writing; $!";
my $templatefile = new IO::File $temp_file, 'r' or die "Unable to open $temp_file $!";
-my $quotesfile = new IO::File $quote_file,'r' or die "Unable to open $quote_file $!";
-my $template = '';
-
-while (<$templatefile>) {
- $template.=$_;
-}
+local $/;
+my $template =<$templatefile>;
undef $templatefile;
-my $quotes = '';
-
-while (<$quotesfile>) {
- $quotes.=$_;
+my $quote;
+my $fortune;
+if (-e $quote_file.'.dat' and open($fortune,'-|','fortune',$quote_file)) {
+ local $/;
+ $quote = <$fortune>;
+ close($fortune);
+ $quote =~ s/\n$//;
+}
+else {
+ my $quotes = '';
+ my $quotesfile = new IO::File $quote_file,'r' or die "Unable to open $quote_file $!";
+ local $/;
+ $quotes = <$quotesfile>;
+ undef $quotesfile;
+ my @quotes = split /\n*\%\n*/s, $quotes;
+ undef $quotes;
+ my $quote = $quotes[rand(@quotes)];
}
-undef $quotesfile;
-
-my @quotes = split /\n*\%\n*/s, $quotes;
-undef $quotes;
-
-my $quote = $quotes[rand($#quotes+1)];
$template =~ s/\[\%\s*quote\s*\%\]/$quote/;