Regular Expressions
Есть строка 1234567890$, привести ёё к виду 1.234.567.890$.
Варианты преобразования:
$price =~ s/(?<=\d)(?=(\d\d\d)+(?!\d))/./g;
$price =~ s/(\d)(?=(\d\d\d)+(?!\d))/$1./g;
while($price =~ s/(\d)((\d\d\d)+(\D|\b))/$1.$2/g){};
Вариант с чтением данных из файла:
#!/usr/bin/perl
undef $/; # режим поглощения файла, иначе будет считана только первая строка
$text = <>; # чтение из файла
$text =~ s/(?<=\d)(?=(\d\d\d)+(?!\d))/./g;
print "$text\n";
По мотивам "Mastering Regular Expressions. Second Edition" (J.E.F.Friedl) :-).
Варианты преобразования:
$price =~ s/(?<=\d)(?=(\d\d\d)+(?!\d))/./g;
$price =~ s/(\d)(?=(\d\d\d)+(?!\d))/$1./g;
while($price =~ s/(\d)((\d\d\d)+(\D|\b))/$1.$2/g){};
Вариант с чтением данных из файла:
#!/usr/bin/perl
undef $/; # режим поглощения файла, иначе будет считана только первая строка
$text = <>; # чтение из файла
$text =~ s/(?<=\d)(?=(\d\d\d)+(?!\d))/./g;
print "$text\n";
По мотивам "Mastering Regular Expressions. Second Edition" (J.E.F.Friedl) :-).