Регулярное выражение для выделения чисел в математической записи

Вот таким вот регулярным выражением можно выделить все числа в некоторых типах математической записи:
#!/usr/bin/perl

$_=qq~
1234
34 -4567
 3456
-0.35e-0,2
    56grf45
-.034 E20
     -.034 e2,01   -,045 e-,23
  -,034 e201  3e-.20
-,045 e-,23 e-0.88

4 E-0.20
22 
E-21
 -0.2 w         4 3
345
2 ^-,3
~;

$a='[+-]?\d*[,.]?\d+';print"$_\n"for/$a\s?[e^]$a|$a|[+-]?e$a/ig
Соответственно идея в том, чтобы сократить число символов в строчке, заменяя их на содержимое переменной $a. цикл for идет пока выполняется регулярное выражение(т.к. оно возвращает список значений $_ в силу наличия квантификатора g), читающее переменную $_.