One sets the variable to
undef, the other to 0. They're not equivalent. "Resetting" a variable is probably more like
undef $bar.
But which you want probably depends on what it is you want to do. For some applications, you'd set $bar=0 initially (or $bar='' for others), so that could be useful.
Example
To print the sum of the numbers in an array,
my $sum;
# ...
$sum = 0;
$sum += $_ for @array;
print "Sum is $sum\n";
Using
undef $sum would be a somewhat subtle error in this case.
Other times, you want undefinedness, and you undef things accordingly. Which is right to use depends on what is "right".