How to stop the enemy from spraying bullets?

#pragma strict

var player : Transform;
var moveSpd : int;
var rotSpd : int;
static var dmg : int;
private var life = 100;
static var gotShot : boolean = false;
var ball : Transform;
var spwnPoint : Transform;
var cooldown = 0;
var fired = 5;
var bulletspd = 1000.0;
var canShoot : boolean;

function Start ()
{
	player = GameObject.FindGameObjectWithTag("Player").transform;
	
}

function Update () 
{
cooldown -=  Time.deltaTime;

// movement
  transform.rotation = Quaternion.Slerp(transform.rotation ,Quaternion.LookRotation(player.position- transform.position),  Time.deltaTime * 6.0);
  transform.position += transform.forward * moveSpd* Time.deltaTime;
  var range : int = Vector3.Distance (player.position , transform.position );  
  
            if(range <= 10 )
            	{
            		 canShoot = true;
            			if(canShoot == true)
            				{
            					Shoot();
            				}
            	}
           
     		if(gotShot == true)
     			{
     				TakeDamage();
     			}
     		if(canShoot == false)
     			{
     				Reload();
     			}
     	
}
function Shoot()
{
	
	
	var shooting = Instantiate(ball,spwnPoint.transform.position, Quaternion.identity);
	ball.rigidbody.AddForce (transform.forward * bulletspd );
	canShoot = false;
	
	
}

function TakeDamage()

{
	life -= dmg;
	dmg = 0;
	gotShot = false;
	
	if(life<=50)
		{
			renderer.material.color = Color.red;
		}
	if(life<=0)
		{
			Destroy(gameObject);
		}
}

function Reload()
{
	yield WaitForSeconds (10);
	canShoot = true;
	
}

Instead of just shooting one bullet at a time, the enemy jut sprays them. How to make it so he can only shoot one bullet at a time?

from the code I can see that you want to shoot every 10 seconds with range <= 10 as the condition. Instead of using extra memory making canShoot booleans, just do

var range : int;
var ReloadTime : float = 10;
InvokeRepeating ("Shoot", 0, ReloadTime );
// Reload time should be 10, that's a long time though

function Update() {
//whatever range caluclation you're performing
//I advise you use Vector3.sqrMagnitude instead of Vector3.Distance because the latter is more expensive
//I put range in Awake so that Shoot() can access it
}

function Shoot () : void {
if (range <=10) {
Instantiate(bullet, transform.position, Quaternion.identity);
}

else {return;}
}