Loading ...
Sorry, an error occurred while loading the content.

Re: [roPerl] Perl question

Expand Messages
  • !RQ9
    pe data de 24 ai mai trimis acest mesaj si erau tot trei zile de cand te chinui... :) eu as avea doar o idee de a lansa scripturile perl ca procese aparte
    Message 1 of 5 , Sep 26, 2001
    • 0 Attachment
      pe data de 24 ai mai trimis acest mesaj si erau tot trei zile de cand
      te chinui... :)

      eu as avea doar o idee de a lansa scripturile perl ca procese aparte
      trimitindu-le parametri de care au nevoie si obtinand rezultatul
      de care ai nevoi intr-un fisier de outpud sau la stdout de unde sa il
      citesti printr-un pipe
      in acest mod responsabil de alocarile, sau ma bine zis de dealocarile
      memoriei va fi resposabil sistemul de operare si nu perl-ul care cateodata,
      da, poate avea misterele sale greu de patruns si putin documentate.

      in orice caz incearca sa 'undef' toate variabilele ,
      cat despre anularea definirii unei subrutineima idee care vine
      in cap este supradefinirea cu o functie care ocupa spatiu minim in memorie.
      de exemplu pentru a elibera spatiul ocupat de fun1 scrii ceva de genul:

      sub fun1(){}; # shrink fun1

      nu cred sa lucreze , dar trebuie sa incerci..

      totusi raman la ideia ca unica solutie care cred ca ar lucra la sigur este
      lansarea sub-ului ca proces aparte.

      pe de alta parte ai putea evita sub-urile in textul la care se face eval.
      banuiesc ca de vreme ce ai facut "sub" textul subrutinei ramane in memorie

      intrebarea o consider foarte interesanta asa ca ma voi gandi la ea, acum
      doar
      ti-am scris ce mi-a venit repede in minte.


      iRQ9



      ----- Original Message -----
      From: "Cristi" <foca@...>
      To: <moldhack@yahoogroups.com>; <roperl@yahoogroups.com>
      Sent: Wednesday, September 26, 2001 4:30 PM
      Subject: [roPerl] Perl question


      > Salut.De 3 zile ma tot chinuie o problema.Am facut in perl scriptu' :
      >
      > ____ Test.pl ______
      > #!/usr/bin/perl
      >
      > use strict;
      >
      > my ($i,@info,$max);
      > $max=1000;
      > @info=split(/[\r\n]/,`ps ux|grep test.pl`);
      > print $info[0]."\n";
      > for($i=0;$i<=$max;$i++)
      > {
      > open(F,"data.dat");
      > eval(join("",<F>));
      > close(F);
      > test_proc(2,4);
      > undef &test_proc;
      > }
      > @info=split(/[\r\n]/,`ps ux|grep test.pl`);
      > print $info[0]."\n";
      >
      > Daca data.dat este :
      > sub test_proc
      > {
      > my($var1,$var2)=@_;
      > $var1+=$var2;
      > }
      > ,prog. imi afiseaza aceeasi mem. folosita.(1.7 cand incepe si 1.9 cand
      > iese),indiferent de val. lui. $max
      > Dar daca data.dat este :
      > sub test_proc
      > {
      > my($var1,$var2)=@_;
      > $var1->info();
      > }
      > (in test.pl nu am mai apelat test_proc),atunci sunt 2 cazuri :
      > $max=100 =>imi afiseaza la inceptu 1.7% din mem. fol. si la sfarsit 2%
      > $max=5000 => la inceput 1.7% si la sfarsit 3%
      > Daca in test_proc bag mai multe linii de genul
      > $var1=$var2;$var1->bau();$var2->mau() si $max 10000,atunci la sfarsitul
      > prog. voi avea 30-40% mem. ocupata.
      >
      > Exemplul este pur "didactic".Ca nu are rost sa definesc de mai multe
      ori
      > acceasi functie.
      > Dar eu am nevoie sa fac un script care stie N functii,dar nu le tine
      > incarcate in memorie,ci incarca codul atunci cand sunt apelate dupa care
      > da
      > un undef *_proc;
      > Dar dupa 20 de apelari ale aceleiasi functii ma trezesc cu multa mem.
      > ocupata.(kam tot atat cat nu as fi facut cu procedel asta.)
      >
      > Oricum,e o "inventie" proprie.Daca are cineva o solutie mai "eleganta"
      > il
      > rog sa ma lumineze si pe mine.
      >
      > 10x
      >
    • sergius@softhome.net
      Uite ca m-am mai gandit la problema ta In primul rand consulta acese linkuri care contin putina informatie utila pentru problema ta:
      Message 2 of 5 , Sep 27, 2001
      • 0 Attachment
        Uite ca m-am mai gandit la problema ta

        In primul rand consulta acese linkuri care contin putina informatie
        utila pentru problema ta:

        http://www.perl.com/CPAN-local/doc/manual/html/pod/perlfaq3.html

        http://www.perl.com/CPAN-
        local/doc/manual/html/pod/perldebug.html#Debugging_Perl_memory_usage


        eu iti recomand ca sub-urile sa le declari nu
        ca:
        sub s1{ } sub s2{ }
        dar in schimb declara niste sub-uri anonime intr-un hash %
        $h{s1}=sub{ }; $h{s2}=sub{ };

        pentru a scapa de ele foloseste
        delete $h{s1}; delete $h{s2};

        in loc de

        undef &s1; undef &s2;


        !RQ9

        --- In roperl@y..., "Cristi" <foca@g...> wrote:
        > Salut.De 3 zile ma tot chinuie o problema.Am facut in perl
        scriptu' :
        >
        > ____ Test.pl ______
        > #!/usr/bin/perl
        >
        > use strict;
        >
        > my ($i,@info,$max);
        > $max=1000;
        > @info=split(/[\r\n]/,`ps ux|grep test.pl`);
        > print $info[0]."\n";
        > for($i=0;$i<=$max;$i++)
        > {
        > open(F,"data.dat");
        > eval(join("",<F>));
        > close(F);
        > test_proc(2,4);
        > undef &test_proc;
        > }
        > @info=split(/[\r\n]/,`ps ux|grep test.pl`);
        > print $info[0]."\n";
        >
        > Daca data.dat este :
        > sub test_proc
        > {
        > my($var1,$var2)=@_;
        > $var1+=$var2;
        > }
        > ,prog. imi afiseaza aceeasi mem. folosita.(1.7 cand incepe si 1.9
        cand
        > iese),indiferent de val. lui. $max
        > Dar daca data.dat este :
        > sub test_proc
        > {
        > my($var1,$var2)=@_;
        > $var1->info();
        > }
        > (in test.pl nu am mai apelat test_proc),atunci sunt 2 cazuri :
        > $max=100 =>imi afiseaza la inceptu 1.7% din mem. fol. si la
        sfarsit 2%
        > $max=5000 => la inceput 1.7% si la sfarsit 3%
        > Daca in test_proc bag mai multe linii de genul
        > $var1=$var2;$var1->bau();$var2->mau() si $max 10000,atunci la
        sfarsitul
        > prog. voi avea 30-40% mem. ocupata.
        >
        > Exemplul este pur "didactic".Ca nu are rost sa definesc de mai
        multe ori
        > acceasi functie.
        > Dar eu am nevoie sa fac un script care stie N functii,dar nu le
        tine
        > incarcate in memorie,ci incarca codul atunci cand sunt apelate
        dupa care
        > da
        > un undef *_proc;
        > Dar dupa 20 de apelari ale aceleiasi functii ma trezesc cu
        multa mem.
        > ocupata.(kam tot atat cat nu as fi facut cu procedel asta.)
        >
        > Oricum,e o "inventie" proprie.Daca are cineva o solutie
        mai "eleganta"
        > il
        > rog sa ma lumineze si pe mine.
        >
        > 10x
      • Cristi
        Sorry.E ceva ciudat cu egroups.com si yahoogroups.Prima a fost pe egroups si nu am primit-o de la lista. Am mai observat ceva : daca definesc o subrutina de
        Message 3 of 5 , Sep 27, 2001
        • 0 Attachment
          Sorry.E ceva ciudat cu egroups.com si yahoogroups.Prima a fost pe egroups si nu am primit-o de la lista.
           
          Am mai observat ceva :
          daca definesc o subrutina de 100000 ori cu codul :
          my ($var)=@_;print "Bau";
          si alta cu codul :
          my ($var)=@_;
          $var->info();
          ,a doua varianta va ocupa mai multa mem. decat prima cam de 10 ori.
           
          Ciudat ,nu ?
           
          ps : am mai incervat si cu \&var;Degeaba.
          -----Original Message-----
          From: !RQ9 <sergius@...>
          To: roperl@yahoogroups.com <roperl@yahoogroups.com>
          Date: Thursday, September 27, 2001 7:34 AM
          Subject: Re: [roPerl] Perl question

          pe data de 24 ai mai  trimis acest mesaj si erau tot trei zile de cand
          te chinui...  :)

          eu as avea doar o idee de a lansa scripturile perl ca procese aparte
          trimitindu-le parametri de care au nevoie si obtinand rezultatul
          de care ai nevoi intr-un fisier de outpud sau la stdout de unde sa il
          citesti printr-un pipe
          in acest mod responsabil de alocarile, sau ma bine zis de dealocarile
          memoriei va fi resposabil sistemul de operare si nu perl-ul care cateodata,
          da, poate avea misterele sale greu de patruns si putin documentate.

          in orice caz incearca sa 'undef'  toate variabilele ,
          cat despre anularea definirii unei subrutineima idee care vine
          in cap este supradefinirea cu o functie care ocupa spatiu minim in memorie.
          de exemplu pentru a elibera spatiul ocupat de fun1 scrii ceva de genul:

          sub  fun1(){};  # shrink  fun1

          nu cred sa lucreze , dar trebuie sa incerci..

          totusi raman la ideia ca unica solutie care cred ca ar lucra la sigur este
          lansarea sub-ului ca proces aparte.

          pe de alta parte ai putea evita sub-urile in textul la care se face eval.
          banuiesc ca de vreme ce ai facut "sub" textul subrutinei ramane in memorie

          intrebarea o consider foarte interesanta asa ca ma voi gandi la ea, acum
          doar
          ti-am scris ce mi-a venit repede in minte.


          iRQ9



          ----- Original Message -----
          From: "Cristi" <foca@...>
          To: <moldhack@yahoogroups.com>; <roperl@yahoogroups.com>
          Sent: Wednesday, September 26, 2001 4:30 PM
          Subject: [roPerl] Perl question


          >   Salut.De 3 zile ma tot chinuie o problema.Am facut in perl scriptu' :
          >
          >   ____ Test.pl  ______
          >   #!/usr/bin/perl
          >
          >   use strict;
          >
          >   my ($i,@info,$max);
          >   $max=1000;
          >   @info=split(/[\r\n]/,`ps ux|grep test.pl`);
          >   print $info[0]."\n";
          >   for($i=0;$i<=$max;$i++)
          >   {
          >     open(F,"data.dat");
          >     eval(join("",<F>));
          >     close(F);
          >     test_proc(2,4);
          >     undef &test_proc;
          >   }
          >   @info=split(/[\r\n]/,`ps ux|grep test.pl`);
          >   print $info[0]."\n";
          >
          >   Daca data.dat este :
          >   sub test_proc
          >   {
          >      my($var1,$var2)=@_;
          >      $var1+=$var2;
          >   }
          >   ,prog. imi afiseaza aceeasi mem. folosita.(1.7 cand incepe si 1.9 cand
          >   iese),indiferent de val. lui. $max
          >   Dar daca data.dat este :
          >   sub test_proc
          >   {
          >      my($var1,$var2)=@_;
          >      $var1->info();
          >   }
          >   (in test.pl nu am mai apelat test_proc),atunci sunt 2 cazuri :
          >   $max=100 =>imi afiseaza la inceptu 1.7% din mem. fol. si la sfarsit 2%
          >   $max=5000 => la inceput 1.7% si la sfarsit 3%
          >   Daca in test_proc bag mai multe linii de genul
          >   $var1=$var2;$var1->bau();$var2->mau() si $max 10000,atunci la sfarsitul
          >   prog. voi avea 30-40% mem. ocupata.
          >
          >     Exemplul este pur "didactic".Ca nu are rost sa definesc de mai multe
          ori
          >   acceasi functie.
          >     Dar eu am nevoie sa fac un script care stie N functii,dar nu le tine
          >   incarcate in memorie,ci incarca codul atunci cand sunt apelate dupa care
          > da
          >   un undef *_proc;
          >     Dar dupa 20 de apelari ale aceleiasi functii ma trezesc cu multa mem.
          >   ocupata.(kam tot atat cat nu as fi facut cu procedel asta.)
          >
          >     Oricum,e o "inventie" proprie.Daca are cineva o solutie mai "eleganta"
          > il
          >   rog sa ma lumineze si pe mine.
          >
          >   10x
          >




          To unsubscribe from this group, send an email to:
          roperl-unsubscribe@egroups.com



          Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
        • Vitalie Chiperi
          Salut tuturor Raspundeti-mi si mie la asa o intrebare - exista un server, unde scripturile perl ruleaza ca nobody si creeaza respectiv cateva fisiere
          Message 4 of 5 , Oct 16, 2001
          • 0 Attachment
            Salut tuturor

            Raspundeti-mi si mie la asa o intrebare - exista un server, unde
            scripturile perl ruleaza ca "nobody" si creeaza respectiv
            cateva fisiere textuale. Problema e ca dupa ce ma loghez prin ftp nu
            pot modifica si nici sterge aceste fisiere - permission denied.
            Intrebarea mea este - cum sa fac un script perl sa ruleze nu ca
            "nobody" ci ca un user specific?

            am incercat chown:
            chown "502", "500", "$dirname/$monthday/$name_value[0].html";

            si chmod , dar fara nici o sansa...

            vitalie
          Your message has been successfully submitted and would be delivered to recipients shortly.