Problems with an SLA Scrip I created

I’ve written a scrip to do not only that, but to change the SLA whenever the Priority is changed, based off what the priority is changed to, however it doesn’t seem to work. Here’s the code - I’m fairly new to perl, so I may have missed something in the code:

my $ticketPriority = $self->TicketObj->Priority;

if($ticketPriority == 0) {

  my $SLA = '24';

  }

elsif($ticketPriority == 25) {

  my $SLA = '8';

  }

elsif($ticketPriority == 50) {

  my $SLA = '4';

  }

elsif($ticketPriority == 75) {

  my $SLA = '1';

  }

else {

  my $SLA = 'Critical';

  }

my $CFName = ‘SLA’;

my $CF = RT::CustomField->new( $RT::SystemUser ); $CF->LoadByNameAndQueue( Name => $CFName, Queue => $Ticket->Queue ); unless( $CF->id ) {

$CF->LoadByNameAndQueue( Name => $CFName, Queue => ‘0’ ); }

unless( $CF->id ) {

$RT::Logger->error( "No field $CFName in queue ". $Ticket->QueueObj->Name );

return undef;

}

$Ticket->AddCustomFieldValue ( Field => $CF, Value => $SLA );

Any suggestions or problems you see?

Thanks!

David Hollinger III
IT Infrastructure Coordinator
Handwriting Without Tears
(301)263-2700 ext 285
(402)430-3127

Dnia 2012-01-11, śro o godzinie 17:50 -0500, David Hollinger pisze:
(cut)

my $ticketPriority = $self->TicketObj->Priority;

if($ticketPriority == 0) {

  my $SLA = '24';

  }

elsif($ticketPriority == 25) {

  my $SLA = '8';

  }

elsif($ticketPriority == 50) {

  my $SLA = '4';

  }

elsif($ticketPriority == 75) {

  my $SLA = '1';

  }

else {

  my $SLA = 'Critical';

  }

“my” keyword defines variable in the smallest posibble lexical context -
in this case your SLA variable is visible only in the if/elsif/else
blocks, not beyond them.

Regards,
Robert Wysocki
administrator systemów linuksowych
CONTIUM S.A., http://www.contium.pl