eheheheheh

questo con il perl c'entra poco... infatti avresti lo stesso risultato con il 90% dei linguaggi di programmazione, i quali distinguono tra "uguale" in senso di assegnazione di un valore, e "uguale" in senso di confronto tra valori.

per cui se dici $i=0 tu assegni 0 alla variabile $i, inoltre se scrivi
if($i=0){...}

dici che vuoi eseguire quanto contenuto in {} solo se l'asegnazione restituisce TRUE, il che non può essere poichè 0 è sempre FALSE.
Al contrario con
if($i=1){}
ottini sempre TRUE.

Per fare quello che ti serve, cioè un confronto devi scrivere:

if($i==0)
oppure
if($i==1)

che significa "se $i è uguale ad x allora esegui{}"