[comp.lang.perl] help needed: running perl script with cron

shan_x@jhuvms.bitnet (07/19/90)

======================================

The following perl script calculates disk space used by all users. 
If I run it interactively, it works fine. But if I put it in "crontab", 
it runs but doesn't output anything. It seems if "cron" runs it,
"open(IN, 'quot|')" doesn't work.  I really can't figure out what is 
wrong with it. Any help is greately appreciated.

Reply here or send it to "shan@sphunix.sph.jhu.edu".

I have perl3.0 at patch 18 in DECsystem 3100.

--Shan

#!/usr/bin/perl
chdir("/user/admin/shan/.acct")||die "can't change dir";
open(OUT,'>test.out')|| die "can't open output";
open(IN,'quot|')|| die "Can't open quot pipe\n";
select(OUT);$|=1;
while(<IN>){
	chop;
	s/^\s*//;
	next if /\/+/;
	($disk,$user)=split('\s+',$_,2);
	$dusage{$user} +=$disk;
}
foreach  $user (sort keys %dusage){
	print OUT "$user      $dusage{$user}\n";
}
close(OUT); 

lwall@jpl-devvax.JPL.NASA.GOV (Larry Wall) (07/19/90)

In article <5859@jhunix.HCF.JHU.EDU> shan_x@jhuvms.bitnet writes:
: ======================================
: 
: The following perl script calculates disk space used by all users. 
: If I run it interactively, it works fine. But if I put it in "crontab", 
: it runs but doesn't output anything. It seems if "cron" runs it,
: "open(IN, 'quot|')" doesn't work.  I really can't figure out what is 
: wrong with it. Any help is greately appreciated.

If you throw in a line at the top that says something like

	$ENV{'PATH'} = '/bin:/usr/bin:/etc:/usr/etc:/usr/ucb';

(or whatever) I bet it would work better.  cron doesn't keep much of a PATH.
Another place people get in trouble is running programs that want a
controlling terminal, though I don't think that's your problem.

Larry