... dfs(0,0); ... sub dfs { my ($x,$y,$word,%visited) = @_; #no error here! ... process code ... dfs($x,$y,$word,%visited); #recursion call }