Rulez Kubuntu 20.04. Versiunea perl este indicată de perl -v ca fiind
perl 5, versiunea 30, subversiune 0 (v5.30.0) construită pentru x86_64-linux-gnu-thread-multi (cu 50 de corecții înregistrate, vezi perl -V
Tocmai am făcut update-ul apt-get și cu managerul de pachete Muon am actualizat toate pachetele perl instalate.
Dar după aceea, perl este 5 ca înainte, nu am perl 6.
Problema mea nu este atunci când folosesc comanda simplă de sistem, cum ar fi
perl -we 'system("echo \"aaa\" > /tmp/WEx_args_file"); '
În acest caz dosarul este scris.
Dar când folosești modul de obiect indirect, cum ar fi
perl -we ' @WE_args = ( "eco", " \"qqq\" > /tmp/WEx_args_file" ); $WE_retcod_system = sistem { $WE_args[0] } @WE_args; printează „WE_retcod_system: ~”, $WE_retcod_system, „~\n”; if($WE_retcod_system != 0) { die "\nsystem >>>YYY>>>@WE_args<<<YYY<<< failed: $?"; }; '
în acest caz dosarul nu este scris.
Ieșirea afișată este pe ecran:
"qqq" > /tmp/WEx_args_file
apoi urmează
WE_retcode_system: ~0~
Am încercat modul de obiect indirect în multe variante o zi întreagă. Nu am găsit un cod pentru a fi scris fișierul tmp.
Va rog, stie cineva o solutie?
=====
În încercarea de a continua, am găsit foarte bine
IPC::Sistem::Simplu
Prin aceasta, intenția mea este să-mi înlocuiesc codul de backtick
echo -n "qqq" | xxd -g1
cu funcția capturex, cum ar fi
perl -folosim IPC::System::Simple qw/capturex/; deschide(FHo, ">/tmp/Wex_args_file") sau die; $WE_got_from_cpx = capturex("echo", "-n", ""qqq"", "|", "xxd -g1" ); printează FHo "WE_got_from_cpx: ~", $WE_got_from_cpx, "~\n"; '
Din câte am înțeles, aceasta este utilizarea corectă a capturex. Dar noua problema, nu merge.
Comanda pe RHS a conductei, i.e.
xxd -g1
nu este executat ci doar copiat. Rezultatul este
WE_got_from_cpx: ~"qqq" | xxd -g1~
Mi-e teamă că aceste module din IPC::System::Simple se bazează pe punctul de conducere, cum ar fi „obiectul indirect”, modul în care doar primul argument este comanda executată.
Cum pot folosi IPC::System::Simple pentru a face întreaga funcție de backtick?
Salutari
anton