Portál AbcLinuxu, 6. listopadu 2025 22:30
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.
system
my $outputCmd = system("find $adresar | grep reg_vyraz");
Mimo to cele je to slozite napsane:system je "v zakladu" Jinak http://search.cpan.org/~dom/perl-5.12.5/pod/perlfunc.pod
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.
open(DATA,"find /etc | grep host|");Funguje, takze problem bude nekde jinde. Muzes uvest cely kod ?
No fuj, takhle prasit v Perlu, to je teda hnus…
A jedna filosofická: co k tomu proboha lidi vede?
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.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.