mapping values

new version (saved about 50 lines in .hex file :))

//Written for atmega328-PU (16MHz external crystal)
//Compiled with arduino 1.0 (www.arduino.cc)

#include <Servo.h>

#define BAUD 9600       //UART baud rate
#define ECHOPINL 9      //Echo pin l = left
#define ECHOPINR 11     //Echo pin r = right
#define MINPULSE 600    //Minimum servo pulse
#define MAXPULSE 2400   //Maximum servo pulse
#define TRIGPINL 10     //Trig pin l
#define TRIGPINR 12     //Trig pin r

Servo servol;           //Creating servo object servol
Servo servor;           //Creating servo object servor

int holdtime = 15;
bool hold = false;
int vall, valr;
int perl, perr;
int prevperl = 0, prevperr = 0;

int sonic(int sensore, int sensort, int mincm, int maxcm)
{
  int per;
  long duration;
  digitalWrite(sensort, LOW);
  delay(2);
  digitalWrite(sensort, HIGH);
  delay(5);
  digitalWrite(sensort, LOW);
  duration = pulseIn(sensore, HIGH); 
  per = ms_cm(duration);
  per = map(per, mincm, maxcm, 0, 100);
  return(per);
}

long ms_cm(long ms)
{
  return ms / 29 / 2;
}

void debugg()
{
  Serial.print(vall);
  Serial.print(" ");
  Serial.print(valr);
  Serial.println();
}

void setup() 
{
  Serial.begin(BAUD);

  pinMode(ECHOPINL, INPUT);
  pinMode(ECHOPINR, INPUT);
  pinMode(TRIGPINL, OUTPUT);
  pinMode(TRIGPINR, OUTPUT);
}

void loop() 
{
  perl = sonic(ECHOPINL, TRIGPINL, 20, 6);
  perr = sonic(ECHOPINR, TRIGPINR, 6, 20);

  if( (perl - prevperl) >= 5 )
  {
    perl = prevperl;
    hold=false;
  }

  if( (perr - prevperr) >= 5 )
  {
    perr = prevperr;
    hold=false;
  }

  vall = map(vall, 0, 100, 90, 180);
  valr = map(valr, 0, 180, 180, 90);

  servol.write(vall * ((float)perl / 100) );
  servor.write(valr * ((float)perl / 100) );
  if(hold==true) delay(holdtime);
  hold=true;
  debugg();
}
  1. Is it better to use pointers or global variables?
  2. Is my

servol.write(vall * ((float)perl / 100) );

valid?
3. Are there any other major issues with my sketch?
Thanks all for help..