http://qs1969.pair.com?node_id=1162430


in reply to Re: How to sleep(), or use a while() in the background?
in thread How to sleep(), or use a while() in the background?

Well. After a bit more searching, I've decided on Proc::Simple. For the sake of brevity, I nearly went for firing a system sleep, and simply appending an &, to background it. But I'm not excited about firing any more system calls, than absolutely necessary.

I also found http://search.cpan.org/~dapm/perl-5.14.4/pod/perlfaq8.pod#How_do_I_start_a_process_in_the_background? a good read. Wish I read that before I started this. :)

--Chris

¡λɐp ʇɑəɹ⅁ ɐ əʌɐɥ puɐ ʻꜱdləɥ ꜱᴉɥʇ ədoH

Replies are listed 'Best First'.
Re^3: How to sleep(), or use a while() in the background?
by taint (Chaplain) on May 09, 2016 at 23:51 UTC

    Well. After attempting every possible iteration, or combination available to me via Process::Simple, and the example listed in perlfaq8:

    system("cmd &")
    I have concluded that it is not possible to perform my desired action(s) with sleep. Where is it is called from the web (via a function that also delivers a web page).

    So don't try this at home, kids! ;-)

    --Chris

    ¡λɐp ʇɑəɹ⅁ ɐ əʌɐɥ puɐ ʻꜱdləɥ ꜱᴉɥʇ ədoH

      what did you try, show the iterations ?

      Try something like

      #!/usr/bin/perl -- use strict; use warnings; ## use File::Spec; our $thisf = File::Spec->rel2abs( __FILE__ ); use Path::Tiny qw/ path /; our $thisfile = path( __FILE__ )->realpath; Main( @ARGV ); exit( 0 ); sub Main { my( $command, @args ) = @_; my %commands = ( deleteafter => \&DeleteAfter, indexpage => \&IndexPage, servefile => \&ServeFile, ); my $action = $commands{lc $command} || \&IndexPage; $action->( @args ); } sub IndexPage { require CGI; my( $q ) = CGI->new; if( my $temporaryfile = AllowedTemporaryFile( $q ) ){ BackgroundDeleteAfter( $temporaryfile, $seconds ); return ServeFile( $q, $temporaryfile ); } return ListFiles( $q ); } sub DeleteAfter { my $time = shift; close STDIN; close STDOUT; ## close STDERR; open STDERR ...; sleep $time; unlink($_) for @_; } sub BackgroundDeleteAfter { require Proc::Background; Proc::Background->new( $^X, $thisfile, deleteafter => @_ ); } sub AllowedTemporaryFile { ... } sub ListFiles { ... } sub ServeFile { my( $q, $file ) = @_; ## see [id://1151407] }
      see Re^4: awanti Perl not playing video with vlc plugin