Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5705[/thread]

sicherheitsrisiko - ja / nein?: \&rmtree



<< >> 7 Einträge, 1 Seite
esskar
 2003-09-10 03:00
#49705 #49705
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sub callback_readdir
{
    my ($folder, $proc) = @_;

    if(opendir(DIR, $folder))
    {
        while(defined(my $file = readdir(DIR)))
        {
            next if $file =~ /^\.\.?$/;
            next if -f "$folder/$file";

            $proc->("$folder/$file");
        }

        closedir(DIR);
    }
}

...


callback_readdir($path, \&rmtree);


kann ja schon heavy sein, vorallem wenn der \ vor &rmtree vergessen wird...
würdet ihr sowas benutzen, wenn ihr wisst, dass u.U. nicht nur ihr selber an dem code rumschraubt?\n\n

<!--EDIT|esskar|1063148491-->
Ishka
 2003-09-10 03:15
#49706 #49706
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
ich würd vor allem ne dicke Warnung als Kommentar hinschreiben
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
Strat
 2003-09-10 09:14
#49707 #49707
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
vielleicht in der sub noch ueberpruefen, ob $path einer Menge von Pfaden angehoert, die geloescht werden duerfen (z.B. aus Liste). vieleicht sogar besser noch das rmtree in einer sub hardcoden und die Sub auch entsprechend benennen
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
format_c
 2003-09-10 10:20
#49708 #49708
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ich würde dann noch Prototypen verwenden. wenn die Menge und die Art der Parameter so entscheidend für deinen Code ist.

Gruß Alex
Crian
 2003-09-10 14:51
#49709 #49709
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Vor allem würde ich überprüfen, ob ich überhaupt Parameter bekommen habe und ob diese Skalare sind. Mit ref kannst Du dann prüfen, ob es eine Referenz ist.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Crian
 2003-09-10 14:53
#49710 #49710
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Bei mir sähe der Funktionsanfang dann so aus:

Code: (dl )
1
2
3
4
5
6
7
8
sub callback_readdir
{
my $folder = shift;
my $proc = shift;

die "Falsche Anzahl Parameter!" unless defined $folder and defined $proc;

die "Folder muss Referenz sein!" unless ref $folder;
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
format_c
 2003-09-10 14:54
#49711 #49711
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Oder so.
Kommt halt drauf an ob es erwartet wird ob so etwas auftreten kann und dies dann mit einer Schönen Meldung mitteilen möchte oder ob das Programm von anderen Leuten angefasst wird die dann evtl. den Fehler machen.

Im Fall1 würd ich zu Crians Methode tendieren
Im Fall2 eher zu den Prototypen.

Gruß Alex
<< >> 7 Einträge, 1 Seite



View all threads created 2003-09-10 03:00.