Is there a cleaner way to doing this ?

Here is my code it finds bad mac addresses.
#start of source code

#!/usr/bin/ruby -w
#find_bad_mac.rb
#description takes input of mac addresses and finds the bad ones
#
#usage pipe a file of mac addresses to this program
#
#cat mac_addresses | find_bad_mac.rb

linecounter = 0

def check_zero(string)
  #checks zeros
  #valid base 16 numbers are '00' but not '0'

  if string.to_s == "00"
    return string=0
  else
    return string
  end

end

while gets

  #a will hold an array of base 16 numbers
  a = []

  #line counter
  linecounter = linecounter + 1

  mac_address = $_.chomp!

  #mac address is transformed into an array called 'a'
  a = $_.split(/:/)

  l = linecounter.to_s


  #each element in array is checked
  a.each   { |element|

    print "debug " +  l + " element:" + element + "\n"

    #tranforms the element into a number
    b = element.to_s.hex

    #zeros are sometimes bad but not always
    if b == 0

     #if number is 0 check to see if it is '00' which is a valid base 16 number
     #or '0' which is not a valid base 16 number.

     zero = check_zero(element.to_s)

     #if the number is not base 16
     if zero != 0

        #create a string with all messed up mac entry
        s = a.join(":")

        print "error with mac address entry " + s.to_s + "\n"
        end

      end

      }
     print "-----------------------------------------------\n"
end
##########################################
#end of source code
~      

-- 
------------------------------------------
Ted Knab
Chester, MD 21619
------------------------------------------
35570707f6274702478656021626f6c6964796f6e602f66602478656
02e6164796f6e60237471647560216e6460276c6f62616c60257e696
4797e2a0