Perl-Skript ausführen - Anfänger braucht Hilfe

Freddy Mercury

Enthusiast
Thread Starter
Mitglied seit
15.06.2007
Beiträge
156
Hallo zusammen,

ich möchte aus einem String den längsten Teilstring, der mehr als 1x vorkommt, herausfinden.
Beispiel: In "testtest123" wäre das "test", und er würde 2x vorkommen.

Dazu habe ich ein Perl-Skript gefunden (s.u.) und mir Perl installiert. Wenn ich das Skript starte, erhalte ich allerdings Fehlermeldungen.
Wo im Skript füge ich meinen String ein? Ich habe jetzt 2h lang Perl Tutorials gelesen, verstehe aber den Code einfach nicht.

Danke!


function len_cmp($match1,$match2) {
return $match2[0] - $match1[0];
}

preg_match_all('/(?=((.+)(?:.*?\2)+))/s', $text, $matches, PREG_SET_ORDER);

foreach ($matches as $match) {
$match[0] = substr_count($match[1], $match[2]) * strlen($match[2]);
}

usort($matches, "len_cmp");

foreach ($matches as $match) {
echo "($matches[2]) $matches[1]\n";
}
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
ich hab zwar keine Ahnung von Perl, aber mal generell.

was soll denn da auch ausgeführt werden? Es ist eine Funktionsdefinition die erstmal nichts tut (function len_cmp) und einen Funktionsaufruf (preg_match_all), dem seine Parameter übergeben werden müssen damit er was tut.
 
Ich habe das Skript von dieser Seite: php - Find longest repeating strings? - Stack Overflow
Dort gibt es auch noch eine zweite Variante. Auch diese kriege ich nicht zum Laufen:

preg_match_all('/(id|class)+="([a-zA-Z0-9-_ ]+)"/', $html, $matches);

$result = explode(" ", implode(" ", $matches[2]));
$parsed = array();
foreach($result as $string) {
if(isset($parsed[$string])) {
$parsed[$string]++;
} else {
$parsed[$string] = 1;
}
}
arsort($parsed);


foreach($parsed as $k => $v) {
echo $k . " -> Found " . $v . " times<br/>";
}


The ouput will be something like:
some_id -> Found 2 times
some_class -> Found 2 times
 
Unter welchem OS willst du das Perk Skript ausführen?
Es fehlt ein Link auf dem perl Interpreter.

Unter Linux z.b.:

#!/usr/bin/perl

Der Text muss in $text übergeben werden (1. Skript)
Oder im 2. dem $parsed Array übergeben werden.
 
Windows.
Ich habe ActivePerl installiert. Von der Kommandozeile aus kann ich ein Perl-Programm auch starten:
perl example.pl
gibt ein "Hallo Welt" aus.

Wie übergebe ich den $text bzw. den $parsed? Als Parameter klappt nicht:
perl skript.pl "testtest123"
wirft nur eine Fehlermeldung.

Habe nun versucht im Quelltext hinzuzufügen:
my $text = "testtest123";
oder $text = "testtest123";
aber das mit geht es auch nicht.

Danke für Eure Hilfe!
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh