Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6560[/thread]

Aufsplitten von Dateinahmen



<< |< 1 2 >| >> 11 Einträge, 2 Seiten
Rippchen
 2004-09-02 15:38
#49837 #49837
User since
2004-08-25
12 Artikel
BenutzerIn
[default_avatar]
Hallo Leute,

Ich hab mal wieder ne Frage:-)

Und zwar will ich unterschiedliche Dateinamen aufsplitten.
Diese sehen wie folgt aus:

rd_repower_g_01.txt.gz_20040624-10.03
rd_sau10-1500369_g_00.txt.gz_20040624-09.21

Ich brache immer nur fogendes stück:

rd_repower
rd_sau10

Wie kann ich das in einer split anweisung machen.

Schonmal danke für eure Hilfe.
Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: Das ist ... unmöglich!
Taulmarill
 2004-09-02 16:14
#49838 #49838
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
also, ich würds mit nem regulären ausdruck versuchen.

Code: (dl )
1
2
3
$foo="rd_repower_g_01.txt.gz_20040624-10.03";
$foo=~ s/^(rd_[a-z\d]+).*$/$1/;
print "$foo\n";
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
snarf
 2004-09-02 16:14
#49839 #49839
User since
2003-08-14
77 Artikel
BenutzerIn
[default_avatar]
Hi

... sollte eigentlich so funktionieren (ungetestet)

Code: (dl )
 $part = join '', ((split /(-|_)/, $filename)[0..2])


Gruss, Dirk
Rippchen
 2004-09-02 16:20
#49840 #49840
User since
2004-08-25
12 Artikel
BenutzerIn
[default_avatar]
Danke haut 1a hin.
Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: Das ist ... unmöglich!
Taulmarill
 2004-09-02 16:20
#49841 #49841
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
[s]@snarf:
nur die ersten beiden elemente, also:
Code: (dl )
 $part = join '', ((split /(-|_)/, $filename)[0..1])
[/s]

edit: vergiss was ich gesagt hab, das war blödsinn\n\n

<!--EDIT|Taulmarill|1094127903-->
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
snarf
 2004-09-02 16:26
#49842 #49842
User since
2003-08-14
77 Artikel
BenutzerIn
[default_avatar]
[quote=Taulmarill,02.09.2004, 14:20]@snarf:
nur die ersten beiden elemente, also:
Code: (dl )
 $part = join '', ((split /(-|_)/, $filename)[0..1])
[/quote]
@taumarill

... spassig - also erst wars wirklich nur ein tippfehler ... ABER dann hab ichs mal laufen lassen: ich benötige den index [0..2] ansonsten kommt nur "rd_"

Warum ???

EDIT: okay, klar .... wegen der () im Muster ... war ja auch so gedacht .... argh (ich sollte heute mal 'ne Mütze Schlaf nehmen - vielleciht klappt es dann auch wieder mit dem denken)\n\n

<!--EDIT|snarf|1094128303-->
Taulmarill
 2004-09-02 17:41
#49843 #49843
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
:D hattest den selben denkfehler wie ich :D
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
pq
 2004-09-02 18:18
#49844 #49844
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=snarf,02.09.2004, 14:14]
Code: (dl )
 $part = join '', ((split /(-|_)/, $filename)[0..2])
[/quote]
da würde ich das hier
 $part = join "", (split /(?=-|_)/, $filename)[0..1];
vorziehen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
snarf
 2004-09-02 18:28
#49845 #49845
User since
2003-08-14
77 Artikel
BenutzerIn
[default_avatar]
@pq

... und manchmal stehe ich dann immer wie ein kleiner Junge mit großen Augen und heruntergeklappter Kinnlade da ... und wundere mich über mein Nicht-Wissen :) :) :)

Erklärst Du mir, was dahinter steht ?

Dirk
Taulmarill
 2004-09-02 18:33
#49846 #49846
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
das ist ein s.g. "zero-width-match". durch das ?= werden nicht die zeichen in den klammern gematcht, sondern die stelle davor.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2004-09-02 15:38.