Schrift
[thread]6657[/thread]

ausgabe bei STDIN ?: ausgabe bei STDIN ?



<< |< 1 2 >| >> 16 Einträge, 2 Seiten
Gast Gast
 2005-01-24 13:40
#51216 #51216
Hallo, bin ganz neu hier und kaum ne ahnung von perl syntax.

Habe folgedes hier gefunden und ausprobiert:
http://www.bsdforen.de/showthread.php?p=68460#post68460

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl
while (<STDIN>)
{
if ($_ =~ /send/)
{

{
print "hello world";
}
}
}


wenn ich in der shell dies mache
Code: (dl )
tail -f /var/log/mail.log |script.pl

und in mail log ein "send in der zeile erscheint macht er nix!
Was ist falsch? und was muss ich tun damit er ein andres shell script startet staat dem print?

Merci
Crian
 2005-01-24 13:48
#51217 #51217
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Herzlich willkommen!

Eigentlich müsste er was ausgeben. Das eine Klammerpaar ist allerdings überflüssig, $_ =~ kann man sich auch sparen, außerdem kann man das bei einzeiligen Blöcken auch umstellen:

Code: (dl )
1
2
3
4
#!/usr/bin/perl
while (<STDIN>) {
   print "hello world\n" if /send/;
}


Wenn Du ein Skript aufrufen willst, kannst Du das zum Beispiel mit system('meinskript.pl') machen.


Kannst Du auch in der Kommandozeile überprüfen mit

Code: (dl )
perl -ne "print qq(Hallo Welt\n) if /send/"


Bei mir funktioniert es, wenn ich dann eine Zeile mit send eingebe.

Steht in Deiner Datei vielleicht kein kleingeschriebenes send? Perl nimmt das genau. Falls Du das nicht möchtest, kannst Du /send/i verwenden, dann matchen auch 'SeNd', 'send', 'SEND' und 'senD'.\n\n

<!--EDIT|Crian|1106567763-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
frage
 2005-01-24 13:56
#51218 #51218
User since
2005-01-24
6 Artikel
BenutzerIn
[default_avatar]
Leider funktioniert dat immer noch nicht, vieleicht weil das "send" pattern mitten in der zeile bei ausgabe steht ? wie kann ich das umgehen? Oder muss erst beeden das auslesen damit er was ausgibt?
wie sieht das dann aus? :0

I moment schaut das so bei mir aus:
Ich habs Übrigens send ins RING gewandelt, also er lauscht auf RING
Code: (dl )
root@fuji:/# tail -f /var/log/mgetty.cuaa1|/etc/ppp/script.pl

aber der steht still, da kommt nix wenn in

Code: (dl )
1
2
3
4
01/24 12:35:41 aa1  waiting for ``OK'' ** found **
01/24 12:35:41 aa1 waiting...
01/24 12:48:52 aa1 wfr: waiting for ``RING''
01/24 12:48:52 aa1 send: ATA[0d]
\n\n

<!--EDIT|frage|1106568231-->
Crian
 2005-01-24 14:05
#51219 #51219
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
kann ich nicht nachvollziehen:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
>perl
while (<DATA>) {
   print "GEFUNDEN\n" if /send/i;
}
_ _DATA_ _
01/24 12:35:41 aa1  waiting for ``OK'' ** found **
01/24 12:35:41 aa1  waiting...
01/24 12:48:52 aa1  wfr: waiting for ``RING''
01/24 12:48:52 aa1  send: ATA[0d]
GEFUNDEN


Die Blanks in der DATA Zeile wegdenken, ist ein Forenbug.\n\n

<!--EDIT|Crian|1106568425-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
frage
 2005-01-24 14:06
#51220 #51220
User since
2005-01-24
6 Artikel
BenutzerIn
[default_avatar]
also nochmal, ich komm ganz durcheinader:

Ich brauch das das perlscript bei pattern RING ausgabe und eine externes shell script startet testecho.sh
wie schaut das dan komplett aus.

Danke schon mal\n\n

<!--EDIT|frage|1106568594-->
Crian
 2005-01-24 14:08
#51221 #51221
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Wie sieht Dein Skript jetzt aus?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
renee
 2005-01-24 14:09
#51222 #51222
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Bei mir funktioniert folgendes:
Aufruf:
Code: (dl )
tail -f logfile.txt | ./skript.pl


logfile:
Code: (dl )
1
2
3
4
5
die
ise
ein send er
test
ein sender


Perl
Code: (dl )
1
2
3
4
5
6
7
8
#! /usr/bin/perl

use strict;
use warnings;

while(<STDIN>){
print if(/send/);
}


Skript noch mit chmod 755 skript.pl ausführbar machen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
frage
 2005-01-24 14:11
#51223 #51223
User since
2005-01-24
6 Artikel
BenutzerIn
[default_avatar]
rene , bei steht dat ja auch in jeder zeile nur ein pattern, bei mir il log ist das RING mitten drinn, wie soll ich dat wohl machen.
renee
 2005-01-24 14:23
#51224 #51224
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
ersetze send durch RING\n\n

<!--EDIT|renee|1106569445-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
frage
 2005-01-24 14:32
#51225 #51225
User since
2005-01-24
6 Artikel
BenutzerIn
[default_avatar]
crain habe dein 2 beitreg nochmal ausprobiert , und es funktioniert :) suppi,
jetzt soll er ein externen shell script ausfüren ansaat die ausgabe . z.B shelscript.sh,
Wie schaut das dann aus?
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2005-01-24 13:40.