#!/usr/bin/env perl use strict; use warnings; use Env qw(HOME); use constant MC_FILE_PATH => '/tmp/mc_'; sub get_new_mail { my $pid; $pid = fork(); exec('herbe', ' failed to fork') if ($pid < 0); if (not $pid) { exec('killall', 'mbsync'); } while (wait() != -1) {} return; } sub get_all_accounts { my @accs; opendir(my $dh, $ENV{'MAIL'}) or die $!; @accs = grep { !/^\./ } readdir($dh); closedir($dh); return @accs; } sub count_new_mails { my ($acc, $maildir) = @_; my $count; my $dir; my $path = $maildir . $acc . '/INBOX/new'; $count = 0; opendir(my $dh, $path) or die $!; $count = grep { -f "$path/$_"} readdir($dh); closedir($dh); return $count; } sub fetch_mail { $ENV{'MAIL'} = $HOME . '/.local/share/mail'; $ENV{'GNUPGHOME'} = $HOME . '/.local/share/gnupg'; $ENV{'PASSWORD_STORE_DIR'} = $HOME . '/.local/share/pass'; my $maildir = $ENV{'MAIL'} . '/'; my @accs = get_all_accounts(); # my $mc_file = MC_FILE_PATH . $accs[0]; my $pre_count = count_new_mails($accs[1], $maildir); print $pre_count . "\n"; get_new_mail(); # get new mail # my $post_count = count_new_mails($accs[0], $maildir); # push str # notify return; } fetch_mail(); __END__