andy: variable in regulären ausdruck...

Beitrag lesen

Hallo,

habe folgendes Problem.

Habe eine Datei1 die enthält folgendes:
<Ziffer><leerzeichen><URL><tabulator><String>
bsp:
1 http://www.url1.de/impressium.html Impressium
2 http://www.blabla.de/blabla/bla/ueber_uns.html Wir Über uns!
3 http://url.de/home/ Home
...
..
.

und ich habe noch eine andere Datei2 die nur eine Liste von Strings enthält.

bsp:

Impressium
Home
Kontakt
Besuchen Sie uns
Bla Bla Bla
...
..
.

aus der ersten Datei möchte ich NUR (nicht die ganze Zeile) die URL-s extrahieren, dessen <String> (das Teil nach dem Tabulator) auch in der Datei2 vorkommt. Die anderen URL möchte ich nicht extrahieren.
Ergebniss wäre hier:

http://www.url1.de/impressium.html
http://url.de/home/

ich habe so angefangen:

Datei1

open INPUT, "$ARGV[0]" or die ("datei $ARGV[0] nicht gefunden");
my @Datei1 = <INPUT>;
close(INPUT);

Datei2

open(DATEI, "<datei2.txt") || die "Datei nicht gefunden";
my @Datei2 = <DATEI>;
close(DATEI);

my @Ergebniss;

foreach my $datei2 (@Datei2) {

foreach my $zeilen (@Datei1) {

$zeilen =~ /([1] )([http://].+)(\t)(.+)/gi;

if ($4 =~ /$datei2/){

push(@Ergebniss,$2)

}
else {}
}
}

Leider funktioniert der Script nicht so. Ich habe in der @Ergebniss nicht das was ich wollte, und ich weiss auch nicht wo der Fehler ist, vermutte aber dass "if ($4 =~ /$datei2/)" nicht ganz korrekt ist, oder liegt es in der schleife???
kann mich jemand vielleicht helfen?

vielen Dank,

Gruss, Andy


  1. 0-9 ↩︎