[Eisfair] perl-Frage: Zeichen aus String entfernen

Marcus Roeckrath marcus.roeckrath at gmx.de
Mi Aug 1 10:45:48 CEST 2018


Hallo,

Marcus Roeckrath wrote:

> aus einer Eingabe wie dieser
> 
> Total file size: 313,631,808 bytes
> 
> wobei in der Zahl gegebenenfalls auch ein Punkt als Tausendertrenner statt
> des , auftauchen könnte, wird die Zahl so ausgefilter:
> 
>     elsif($line =~ /Total file size:\s+([\d,.]+)/){
>           $bkdata{$source}{'file_size'}=$1;
> 
> womit dann file_size 313,631,808 enthält.
> 
> Da mit dieser Zahl noch Berechnungen gemacht werden müssen, müssen die
> Tausendertrenner - also entweder , oder . - noch raus.
> 
> Wie entferne ich aus dieser Variablen nun , oder ., so dass als Ergebnis
> 
> 313631808
> 
> rauskommt.

Vielleicht habe ich zuwenig Infos über den Code geliefert:

Die oben ausgelesenen daten (file_size) werden in folgender Zeile (eine
Subroutine) weiterverarbeitet.

  my $bytes = $bkdata{$source}{'file_size'}/1000000; # convert to MB

was wegen der Tausendertrenner Fehler auswirft, da es kein numerical sei.

Vielleicht kann man aus der Variablen bytes um die , bzw . erleichtern, als
Idee so - geht natürlich nicht:

  my $bytes = $bkdata{$source}{'file_size'};
  bytes = bytes ohne , oder .
  bytes = bytes / 1000000

Ich habe keine Ahnung von perl, brauche das aber, um ein perl-Skript aus der
rsnapshot-Source zu fixen.

-- 
Gruss Marcus


Mehr Informationen über die Mailingliste Eisfair