Schrift
[thread]7457[/thread]

Array/String manipulieren

Leser: 1


<< >> 7 Einträge, 1 Seite
Nina
 2005-11-10 17:20
#59939 #59939
User since
2005-10-19
4 Artikel
BenutzerIn
[default_avatar]
Hallo Zusammen,

-mein erster Beitrag im Forum. Ich bin seit 1 Woche dabei Perl mit dem Lama Buch also noch ziemliche Anfängerin.
Problem:
Ich habe ein Array mit lauter 32 digits langen Hexzahlen pro Element (eingelesen aus Datei).
Jetzt will ich an den Anfang jedes Elements noch 8 Digits (adresse) einfügen dazu habe ich die Sub geschrieben wo die Adressen generiert Wenn ich jetzt die Sub mehrmals aufrufe funktioniert sie auch richtig mit dem Zählen Mein problem ist jetzt wie kriege ich den Wert (Adresse) vor das Arrayelement?


Grüßle
Nina

Code: (dl )
1
2
3
4
5
6
7
8
9
10
my $zaehl = 0xFFC10000;

sub adr {
if ($zaehl == 0xFFC10000) {
printf "%08X\n", $zaehl;
}
$zaehl += hex("00000010");
printf "%08X\n", $zaehl;

}
Taulmarill
 2005-11-10 17:32
#59940 #59940
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
das lama-buch ist schon einmal ein guter einstieg, weiter so.

ich bin mir nicht sicher, ob ich dich richtig verstanden habe, aber ich versuchs einfach mal. du kannst in perl eine zeichenkette mit dem "." mit einer anderen verknüpfen, du könntest als folgendes machen:
Code: (dl )
1
2
3
4
my $text = "haus";
my $artikel = "das";
my $text = $artikel . " " . $text;
print "$text\n";

dieser code würde "das haus\n" ausgeben. hilft dir das weiter?
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
J-jayz-Z
 2005-11-10 17:49
#59941 #59941
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Okay, ich denke mal, so sollte es gehen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
sub adr {
my @array = shift; #Übergabe wird übernommen
foreach(@array) { #Das neue Array wird durchlaufen
if ($_ == 0xFFC10000) { #Deine Prüfung ...
printf "%08X\n", $_;
}
$_ = hex("00000010") . $_; #$_ wird dein hex() mit dem vorherigen Wert von $_
printf "%08X\n", $_;
}
}

Viel spaß noch weiterhin mit Perl !\n\n

<!--EDIT|J-jayz-Z|1131637858-->
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
sesth
 2005-11-10 18:41
#59942 #59942
User since
2005-02-01
181 Artikel
BenutzerIn
[default_avatar]
Oder war dies gemeint?
Code (perl): (dl )
1
2
3
4
5
6
my $zaehl = 0xFFC10000;
my @array = 13..27;            # Beispieldaten
foreach my $val (@array) {
    printf "%08X: %08X|n", $zaehl, $val;
    $zaehl += 0x10;
}

|n steht für \n (wird sonst verschluckt).\n\n

<!--EDIT|sesth|1131641020-->
Gruß
Thomas
Nina
 2005-11-10 20:13
#59943 #59943
User since
2005-10-19
4 Artikel
BenutzerIn
[default_avatar]
Erstmal vielen Dank an alle für die Hilfe!

Die Lösung von Thomas hat auf anhieb funktioniert. Aber wie kann ich jetzt die Zeilen wieder in ein neues Array schreiben ohne das meine Adresse am anfang schon auf FFC10010 statt auf FFC10000?
pKai
 2005-11-10 20:29
#59944 #59944
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Statt printf (druckt das formatierte Ergebnis), kannst du sprintf (gibt das formatierte Ergebnis als String zurück) verwenden und das dann abspeichern, wo du es brauchst.
Deine Bemerkung mit dem falschen Anfangswert(?) habe ich nicht verstanden.
I sense a soul in search of answers.
J-jayz-Z
 2005-11-11 00:42
#59945 #59945
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich habs auch niht verstanden ^^
Aber vielleicht kannst du ja hier mal vorbei schauen: http://perl-tutor.de/perl_struct.html
Da dürftest du iniges zum Thema Arrays und Hashes finden. Der perldoc Teil auf meiner Homepage könnte für dich auch interessant sein!
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
<< >> 7 Einträge, 1 Seite



View all threads created 2005-11-10 17:20.