Normalerweise würden wir erwarten, dass Sie einige Beweise dafür vorlegen, dass Sie versuchen, das Problem selbst zu lösen, bevor Sie eine Antwort geben.
Sie verwenden den Match-Operator (m/.../
), um zu überprüfen, ob eine Zeichenfolge mit einem regulären Ausdruck übereinstimmt. Die m
wird oft weggelassen, so dass Sie es als /.../
geschrieben sehen. Standardmäßig stimmt es mit der Variablen $_
überein, aber Sie können dies ändern, indem Sie den Bindungsoperator =~
verwenden. Wenn eine Regex Klammern enthält ((...)
), dann wird alles, was mit diesem Abschnitt der Regex übereinstimmt, in $1
(und $2
, $3
usw. für nachfolgende Klammern) gespeichert. Diese "erfassten" Werte werden auch vom Vergleichsoperator zurückgegeben, wenn er im Listenkontext ausgewertet wird.
Es ist immer eine gute Idee, den Rückgabewert des Match-Operators zu überprüfen, da Sie höchstwahrscheinlich verschiedene Aktionen ausführen möchten, wenn das Match nicht erfolgreich war.
Weitere Details zum Match-Operator und perldoc perlre finden Sie unter perldoc perlop für weitere Details zu Perls Regex-Unterstützung.
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
$_ = 'Thu 2016/08/04 10:57:09 gammu-smsd[48014]: Read 0 messages';
if (my ($time) = /(\d\d:\d\d:\d\d)/) {
say "Time is '$time'";
} else {
say 'No time found in string';
}
und die Daten von externen Prozess zu bekommen ...
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
open my $tail_fh, 'tail -f /var/log/sms |' or die $!;
while (<$tail_fh>) {
if (my ($time) = /(\d\d:\d\d:\d\d)/) {
say "Time is '$time'";
} else {
say 'No time found in string';
}
}
es funktioniert .... Ich brauche noch etwas, wie coud i tail -f/var/log/sms ausführen in Script Perl um den Txt zu bekommen ?? – wael
@wael: Siehe [meine Antwort] (http://stackoverflow.com/a/38762344/7231). Aber wirklich, das ist alles ziemlich einfaches Zeug. Hast du irgendwelche [Perl Bücher] (http: //learn.perl.org/books /) oder irgendwelche [Perl Tutorials] (http://perl-tutorial.org/) genommen haben, bevor Sie dies versuchen? –
@wael sehe meine Bearbeitung an die Anser –