perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 24
Click for quality!




11.02.2012 / 22:47

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


Beitrageinzelne spalten bearbeiten @pq und @renee
Seitenanfang
da im geschäft leider mein zugang zur perlcommunity gesperrt wurde, würde ich hier gerne mein glück versuchen.
Ich hab folgendes problem und zwar würde ich gerne aus einer liste die letzte Spalte bearbeiten. Dort stehen zahlen die in KB angegeben sind, die ich durch 1024 teilen muss um die MB rauszubekommen.
Aber wie sag ich perl das es nur um die letzte spalte geht und alle anderen zahlen sofern welche vorkommen sollen in ruhe gelassen werden.
Ich bin für jeden vorschlag dankbar.

PS mit splice geht es meiner meinung nach nicht oder doch?
lg sabrina

Datum: 18.10.2006-10:48

Beitragre: einzelne spalten bearbeiten @pq und @renee
Seitenanfang
soll es direkt in der Datei bearbeitet werden oder soll es einfach irgendwie ausgegeben werden?

Wie sieht die Datei aus?

Vielleicht als Hilfestellung:

my @array = (1,2,6,12734);
my $last_column = $array[-1];

Datum: 18.10.2006-11:07

Beitragre: einzelne spalten bearbeiten @pq und @renee
Seitenanfang
Du kennst doch noch deinen ersten Code bei dem du mir geholfen hast.

#!/usr/bin/perl
use warnings;
use strict;

my @data;
my $columns = 5;

open(FH,"<BLUBB.txt") or die $!;
while(my $line = <FH>) {
chomp $line;
my @array = (split(/[\t\s\\]/,$line))[0..($columns-1)];
foreach (@array) {
s/^\s+/;/g;
s/\s+$/;/g;
} # foreach

if($line =~ /\bBLA|SAND?\b/ and $line !~ /\bMUSCHEL\b/){
push(@data,[@array]);
}
} # while

close (FH);

my $format = '';

for my $i(0..scalar(@{$data[0]})-1){
my $max = find_longest(map{$_->[$i]}@data);
$format .= '%-'.$max.'s ';
}

for my $entry(@data){
print sprintf($format . "\n",@$entry);
}

open(OUTDATEN, ">ZIEL1.txt") or die "Fehler beim oeffnen/anlegen: $!";
for my $entry(@data)
{
print OUTDATEN join(';',@$entry),";50","\n"; #ausgabe in datei hier wird festgelegt das ";" als trenner gilt
}
close (OUTDATEN)or die $!;

sub find_longest{ # hier wird der laengste inhalt des feldes berechnet
my $longest = 0;
for(@_){
my $length = length($_);
$longest = $length if($length > $longest);
}

return $longest;
}


das sind in der ausgabe 5 spalten und in der 5 steht eine KB zahl die ich umwandeln in eine MB zahl.
Aber wie sprech ich jetz diese spalte an, um ihr das zu sagen?

Datum: 18.10.2006-11:16

Beitragre: einzelne spalten bearbeiten @pq und @renee
Seitenanfang
Muss ich das mit einer Subroutine machen oder kann ich dieses problem auch irgendwie anders lösen?

Für was genau steht das, ist das eine Möglichkeit das array anzusprechen?

my @array = (1,2,6,12734);

Das hier steht für die letzte spalte -1.
Aber wie sag ich, das ich in jeder Zeile die letzte Spalte immer durch 1024 dividieren möchte, damit ich die MB rausbekomme.

my $last_column = $array[-1];

Datum: 18.10.2006-14:28

-






-
-