in reply to Win32::TaskScheduler error
Your question would get more response if it was readable. (Please read Writeup Formatting Tips).
The first thing you should add to you code is some error checking. Using print $obj->someCall() isn't very useful. The Perlish idiom is
$obj->someCall() or die "Error message: $! ($^E)";
Note: The $^E. This sometimes gives you a little extra information about what went wrong. The main benefit of this idiom is that the program stops at the point that something fails (preventing loads of spurios errors that occur as a knock-on effect of the first failure--and the message will tell you which line failed and where!
Below is your code cleaned up with those additions. The error messages could be made better, but that's your job.
As for the cause of your failure. Once you know what is failing and where, and what if any error message are being produced, you may then be able to work that out for yourself.
use Win32::TaskScheduler; sub create_schedule($$$$$$$$$$$) { my( $mins, $hrs, $mon, $tue, $wed, $thu, $fri, $sat, $sun, $target_machine, $task_name ) = @_; my $days; my $scheduler = Win32::TaskScheduler->New() or die "Win32::TaskScheduler->New() failed: $! $^E"; my %trig=( 'BeginYear' => 2005, 'BeginMonth' => 03, 'BeginDay' => 20, 'StartHour' => $hrs, 'StartMinute' => $mins, 'TriggerType' => $scheduler -> TASK_TIME_TRIGGER_MONTHLYDOW, 'Type'=>{ 'WhichWeek' => $scheduler->TASK_FIRST_WEEK | $scheduler->TASK_SECOND_WEEK | $scheduler->TASK_THIRD_WEEK | $scheduler->TASK_LAST_WEEK, 'DaysOfTheWeek' => $scheduler->TASK_TUESDAY, 'Months' => $scheduler->TASK_JANUARY | $scheduler->TASK_FEBRUARY | $scheduler->TASK_MARCH | $scheduler->TASK_APRIL | $scheduler->TASK_MAY | $scheduler->TASK_JUNE | $scheduler->TASK_JULY | $scheduler->TASK_AUGUST | $scheduler->TASK_SEPTEMBER | $scheduler->TASK_OCTOBER | $scheduler->TASK_NOVEMBER | $scheduler->TASK_DECEMBER }, ); $scheduler->SetTargetComputer("\\\\MYHOST") or die "Error: $! $^E"; foreach my $k (keys %trig) { print "$k=" . $trig{$k} . "\n"; } $scheduler->NewWorkItem( $task_name,\%trig ); $scheduler->SetApplicationName ("timezone.pm") or die "Error: $! $^E"; $scheduler->Save() or die "Error: $! $^E"; $scheduler = Win32::TaskScheduler->New() or die "Error: $! $^E"; $scheduler->Activate($task_name) or die "Error: $! $^E";; }
|
|---|