Оператор =~
вернет количество изменений, внесенных при замене, и, если вы не сделаете это глобально, он всегда вернет 1 или 0. Кроме того, замены выполняются на месте, поэтому, если ваша цель не изменять $date
, вы не хотите заменять.
Попытка:
$date =~ m/(..)\/(..)\/(....)/;
$newdate = "$3,$2,$1";