Portál AbcLinuxu, 10. května 2025 05:54

Dotaz: Perl - open

24.2.2013 21:34 Petr
Perl - open
Přečteno: 335×
Odpovědět | Admin
Dobrý den,

rád bych vás poprosil o pomoc při programování v perlu. Mám následující příkaz: $adresar = "nazev_adresare" open(DATA, "find $adresar |") tento kod funguje a do DATA se ulozi vystup funkce "find"

ale kdyz pridam: open(DATA, "find $adresar | grep reg_vyraz |")

tak mi to nenajde nic. Regulární výraz je určitě správně, protože normalně v konzoli to funguje.

Děkuji předem za každou radu.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.2.2013 22:40 ironman
Rozbalit Rozbalit vše Re: Perl - open
Odpovědět | | Sbalit | Link | Blokovat | Admin
proc tak slozite (aspon pro me)? Chci spustit externi prikaz a ziskat z nej vystup pak pouziju prikaz system
my $outputCmd = system("find $adresar | grep reg_vyraz");
Mimo to cele je to slozite napsane:
1/ find umi prez exec sam volat grep tim se zvysi prehlednost externiho commandu.
2/ perl ma svoje regularni vyrazi = cistejsi reseni vlastnimi regex v kodu perlu, externe bych volal jen find pro ziskani seznamu souboru
25.2.2013 09:30 Petr
Rozbalit Rozbalit vše Re: Perl - open
Dekuju za radu. Ještě otázka. Funkce system je ze standardních knihoven?
25.2.2013 18:10 ironman
Rozbalit Rozbalit vše Re: Perl - open
Ano funkce system je "v zakladu" Jinak http://search.cpan.org/~dom/perl-5.12.5/pod/perlfunc.pod
24.2.2013 22:45 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: Perl - open
Odpovědět | | Sbalit | Link | Blokovat | Admin
A co varianta:
print `find $adresar | grep reg_vyraz`;
Pokud bude fungovat, tak bych hledal příčinu v regulárním výrazu, respektive jeho pozměnění v perlu před vykonáním.
24.2.2013 22:50 NN
Rozbalit Rozbalit vše Re: Perl - open
Odpovědět | | Sbalit | Link | Blokovat | Admin
open(DATA,"find /etc | grep host|");
Funguje, takze problem bude nekde jinde. Muzes uvest cely kod ?
Brilantní modř avatar 26.2.2013 00:48 Brilantní modř | skóre: 14
Rozbalit Rozbalit vše Re: Perl - open
Odpovědět | | Sbalit | Link | Blokovat | Admin

No fuj, takhle prasit v Perlu, to je teda hnus…

A jedna filosofická: co k tomu proboha lidi vede?

martin-ux avatar 26.2.2013 12:22 martin-ux | skóre: 18 | Bratislava
Rozbalit Rozbalit vše Re: Perl - open
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co tak pouzit Find::File:
#!/usr/bin/perl

use warnings;
use strict;
use File::Find;

find (\&open_routine, "/etc/");

sub open_routine {
        return 1 if (! /^hosts$/);

        print "DEBUG: got file: $_\n";

        open (HFD, '<' . $_) or die ("ERROR: unable to open $_, $!");

        print $_ foreach (<HFD>);

        close (HFD);
}
Hladata hosts v /etc. Ak najde, otvori a vypise jeho obsah.
..when you do things right, people won't be sure you've done anything at all..

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.