#!/bin/bash trap 'xset -led named "Scroll Lock"; exit ' SIGINT SIGTERM while(true); do xset led named "Scroll Lock" ; sleep 0.05 ; xset -led named "Scroll Lock"; sleep 0.05; done  sub mymail(){ use Mail::IMAPClient; use IO::Socket::SSL; while (42){ my $user = 'login'; my $server = 'server.ltd'; my $pass = 'P@ssw0rd'; my $socket = IO::Socket::SSL->new( PeerAddr => $server, PeerPort => 993, ) or die "socket(): $@"; my $imap = Mail::IMAPClient->new( Socket => $socket, Server => $server, User => $user, Password => $pass, Debug => 0) or die "Cannot connect to $server as $user: $@"; my $not_read; foreach my $f ($imap->folders) { my $i = $imap->unseen_count($f)||0 ; $not_read += $i; } $imap->logout(); print $not_read; } }  #!/usr/bin/perl #   use strict; use threads; #  use Thread::Queue; #       my $mypipe = Thread::Queue->new; #  #    threads->create(\&mymail); #   threads->create(\&myleds)->join; #      sub myleds(){ my $beep = 0; #1     . my $mypid; # pid ,   while($_ = $mypipe->dequeue){ #     if ($_ > 1){ if ($beep == 0){ $mypid = `nohup beepScroll > /dev/null 2>&1 &echo \$!`; #     pid'   $beep = 1; } } else { `kill $mypid` if $mypid; #    ,      . $mypid = 0 if $mypid; $beep = 0; } } } , and in the mymail () function should be replaced prinr $not_read on $mypipe->enqueue($not_read+1) "$ not_read + 1" because if while receives 0, it will consider that the conditions are false. #!/usr/bin/perl use strict; use threads; use Thread::Queue; my $mypipe = Thread::Queue->new; threads->create(\&mymail); threads->create(\&myleds)->join; sub mymail(){ use Mail::IMAPClient; use IO::Socket::SSL; while (42){ my $user = 'login'; my $server = 'server.ltd'; my $pass = 'P@ssw0rd'; my $socket = IO::Socket::SSL->new( PeerAddr => $server, PeerPort => 993, ) or die "socket(): $@"; my $imap = Mail::IMAPClient->new( Socket => $socket, Server => $server, User => $user, Password => $pass, Debug => 0) or die "Cannot connect to $server as $user: $@"; my $not_read; foreach my $f ($imap->folders) { my $i = $imap->unseen_count($f)||0 ; $not_read += $i; } $imap->logout(); $mypipe->enqueue($not_read+1); sleep 60; } #     ...     :) $mypipe->enqueue(undef); exit 1; } sub myleds(){ my $beep = 0; my $mypid; while($_ = $mypipe->dequeue){ if ($_ > 1){ if ($beep == 0){ $mypid = `nohup beepScroll > /dev/null 2>&1 &echo \$!`; $beep = 1; } } else { $beep = 0; `kill $mypid` if $mypid; $mypid = 0 if $mypid; } } } Source: https://habr.com/ru/post/199270/
All Articles