Portál AbcLinuxu, 13. května 2025 20:05

Dotaz: perl a fce ` `

5.3.2006 18:33 h7
perl a fce ` `
Přečteno: 162×
Odpovědět | Admin
Ahoj ,snazim se v Perlu pomoci fce `` zavolat bash prikazy spojene rourou a vyslednou hodnotu ulozit do promene takto:

$pocet = `/bin/ls -R |/usr/bin/wc -l`

...a nefunguje to ,kde delam chybu? Zkousel jsem prikazy spustit v subshelu a take nepomohlo.

$pocet = `(/bin/ls -R |/usr/bin/wc -l)`

Diky za kazdou ideu. Pekny vecer h7
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.3.2006 18:48 hrobar | skóre: 13
Rozbalit Rozbalit vše Re: perl a fce ` `
Odpovědět | | Sbalit | Link | Blokovat | Admin
`` sa vola backticks. Chyba ti tam bodkociarka na konci.
5.3.2006 18:50 h7
Rozbalit Rozbalit vše Re: perl a fce ` `
sorry ,ja ji zapomel do diskuze napsat, s ni to take nejede..
5.3.2006 18:54 hrobar | skóre: 13
Rozbalit Rozbalit vše Re: perl a fce ` `
Ja som spravil cut&paste doplnil bodkociarku a funguje to bez problemov. Co ti to vypisuje za error?
5.3.2006 20:58 Dunric | skóre: 21
Rozbalit Rozbalit vše Re: perl a fce ` `
Fungovat by to mělo. Co myslíš tím, že to nejde ? Nespouštíš to náhodou nad jiným adresářem než očekáváš ?
In the garden sleeps a messenger ·
6.3.2006 09:39 h7
Rozbalit Rozbalit vše Re: perl a fce ` `
$soubor=`/bin/ls -R $adresar | /usr/bin/wc -l`;

hodi mi chybu:

sh: -c: line 1: syntax error near unexpected token `|' sh: -c: line 1: ` | /usr/bin/wc -l' sh: -c: line 1: syntax error near unexpected token `|' sh: -c: line 1: ` | /usr/bin/wc -l' sh: -c: line 1: syntax error near unexpected token `|' sh: -c: line 1: ` | /usr/bin/wc -l'

strednik na konci nepouze .... h7
5.3.2006 19:21 0
Rozbalit Rozbalit vše Re: perl a fce ` `
Odpovědět | | Sbalit | Link | Blokovat | Admin
V perlu je tahle vec implementovana pomerne zajimavym zpusobem:
open(A,"|/bin/ls -R |/usr/bin/wc -l");
$pocet = <A>;
close(A);
print $pocet;
5.3.2006 19:41 hrobar | skóre: 13
Rozbalit Rozbalit vše Re: perl a fce ` `
Az na to, ze to tvoje riesenie nefunguje. $pocet zostane neinicializovany.
5.3.2006 19:57 0
Rozbalit Rozbalit vše Re: perl a fce ` `
Funguje, ale vypisuje warning. Opravena verse:
#!/usr/local/bin/perl -w
open(A,"|/bin/ls -R |/usr/bin/wc -l");
$pocet = A;
close(A);
print $pocet;
(zmente si cestu k perl binarce, pokud to mate jinde). Aspon je videt, jakej je ten perl totalne zmatenej. Mam pocit, ze starsi interprety vyzadovaly tam ty zavorky, zatimco ty novejsi ne.
5.3.2006 20:09 hrobar | skóre: 13
Rozbalit Rozbalit vše Re: perl a fce ` `
Trvam na tom, ze to predchadzajuce riesenie je zle a nefunguje. Prepis print $pocet; na print "Vypis: $pocet"; a pusti si to. Vypise ti to Vypis: a nad tym sice bude vypisany pocet fajlov ale tie nie su vypisane cez perl(print) ale vypisuje ich ten vyraz uvedeny v backticks. $pocet je neinicializovany.
5.3.2006 20:19 hrobar | skóre: 13
Rozbalit Rozbalit vše Re: perl a fce ` `
A to druhe riesenie je tiez zle. print vypise "A". Ospravedlnujem sa, ze to pisem do dvoch prispevkov som ten prvy omylom odoslal.
6.3.2006 13:49 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: perl a fce ` `
(zmente si cestu k perl binarce, pokud to mate jinde). Aspon je videt, jakej je ten perl totalne zmatenej.
RTFM perlrun
Mam pocit, ze starsi interprety vyzadovaly tam ty zavorky, zatimco ty novejsi ne.
ROFL. Ty jseš mimoň.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
6.3.2006 10:00 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: perl a fce ` `
Hmm a ty do toho něco posíláš a nic z toho číst nehodláš? Tomu říkám perl odborník.
$ perl <<EOF
open(A,"|/bin/ls -R |/usr/bin/wc -l");
$pocet = <A>;
close(A);
print "Je tam toho $pocet";
EOF
5740
Je tam toho $ perl <<EOF
open(A,"/bin/ls -R |/usr/bin/wc -l|");
$pocet = <A>;
close(A);
print "Je tam toho $pocet";
EOF
Je tam toho 5740
$
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
6.3.2006 10:37 barney
Rozbalit Rozbalit vše Re: perl a fce ` `
mala chybicka sa ti vkradla :-))

open(A,"|/bin/ls -R |/usr/bin/wc -l");
open(A,"/bin/ls -R |/usr/bin/wc -l|");

prve je zapisovanie, druhe citanie

6.3.2006 07:24 petr_p
Rozbalit Rozbalit vše Re: perl a fce ` `
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ja nevim, ale mne (perl-5.8.7) to funguje:
petr@cz2cbjmc:~/web $ perl -we 'my $data=`/bin/ls -R |/usr/bin/wc -l`; print "Vystup\n${data}Konec vystupu\n";' 
Vystup
1
Konec vystupu
6.3.2006 09:54 h7
Rozbalit Rozbalit vše Re: perl a fce ` `
Odpovědět | | Sbalit | Link | Blokovat | Admin
$soubor=`/bin/ls -R $adresar | /usr/bin/wc -l`;

Tak jsem prisel na chybu ,ktera je v pouziti kontrukce $adresar. Takze nova otazka je ,jak zavolat prikaz z bashe s parametrem? h7
6.3.2006 10:02 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: perl a fce ` `
perl -we 'my $adresar=q(work); my $data=qx(/bin/ls -R $adresar|/usr/bin/wc -l); print qq(Vystup\n${data}Konec vystupu\n);'
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
6.3.2006 12:05 h7
Rozbalit Rozbalit vše Re: perl a fce ` `
pane kolegu,vase konstrukce vypada zajimave :-) ,ale $data=qx(/bin/ls -R $adresar|/usr/bin/wc -l); mi stale nechodi.Muzete mi vas priklad trosku osvetlit? h7
6.3.2006 12:27 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: perl a fce ` `
Informace:
mi stale nechodi
rovná se žádná informace. Obzvláště pokud mě to chodí a bez problémů. Co znamená nechodí? Nemá to nožičky, tak to ani chodit nemůže. Co se týče konstrukcí q(), qq(), qx(), qw() a další, RTFM perlop.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
6.3.2006 12:46 h7
Rozbalit Rozbalit vše Re: perl a fce ` `
CHYBA: sh: -c: line 1: syntax error near unexpected token `|' sh: -c: line 1: ` | /usr/bin/wc -l'

...a muj skript ,ktery ma vytisknout velikost,pocet souboru a jmeno uzivatele maildiru.

ps: v perlu delam teprve 2 den h7

#!/usr/bin/perl -w use warnings; use locale;

@velikosti = (); @osoby = (); @soubory = ();

@adresare = `/bin/find /_zaloha -type d -iname '*Maildir*'`;

foreach $adresar (@adresare) { $velikostH = `/usr/bin/du -sk $adresar`; @velikostiH = split (/\s/,$velikostH); push (@velikosti,$velikostiH[0]); @osobyH = split(/\//,$adresar); if ($osobyH[-2] =~ /\d{1,2}/ ) { push (@osoby,$osobyH[-3]); } else { push (@osoby,$osobyH[-2]); } $soubor= qx(/bin/ls -R $adresar | /usr/bin/wc -l); push (@soubory,$soubor); }

for ($i=0;$i<=$#adresare;++$i) { print $osoby[$i]."\n"; print $velikosti[$i]."\n"; print $soubory[$i]."\n"; }
6.3.2006 13:42 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: perl a fce ` `
Ty neznáš tag pre? Tím bych začal, no a pak je tu ta záležitost s tím koncem řádku. Schválně jestli příjdeš na to co tím myslím. Krom toho na to jdeš úplně blbě. Volání nějakých scriptů je zbytečné.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
6.3.2006 10:33 barney
Rozbalit Rozbalit vše Re: perl a fce ` `
...
$adresar =~ s/"/\\"/g;
$soubor=`/bin/ls -R "$adresar" | /usr/bin/wc -l`;
6.3.2006 12:32 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: perl a fce ` `
Nebylo by poněkud bezpečnější použít String::ShellQuote?
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
6.3.2006 13:16 barney
Rozbalit Rozbalit vše Re: perl a fce ` `
no to by bolo :-) takisto ako pouzit File::Find (tiez na cpan-e)
6.3.2006 12:32 Dunric | skóre: 21
Rozbalit Rozbalit vše Re: perl a fce ` `
Ty jseš samá legrace. Nějak ti ta proměnná $adresar z původního dotazu vypadla, co ?
In the garden sleeps a messenger ·
6.3.2006 12:42 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: perl a fce ` `
hmm, a krom toho vlastně nechápu proč nepoužije radši něco takového
perl -MFile::Find -e 'find(sub{$a++}, q(work)); print $a,$/'
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
6.3.2006 12:41 h7
Rozbalit Rozbalit vše Re: perl a fce ` `
Odpovědět | | Sbalit | Link | Blokovat | Admin
stane se..pardon h7

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.