Thread EasyReportGenerator: New CPAN module in development (16 answers)
Opened by jpr65 at 2013-04-18 08:30

jpr65
 2013-04-19 08:01
#167147 #167147
User since
2013-04-18
10 articles
BenutzerIn
[default_avatar]
2013-04-18T23:03:30 Raubtier
Habe ich nicht verstanden. Was geht mit dem String, das mit einer sub nicht ginge?


Andersrum: Ich benötige hier die sub, weil ich sonst nicht mehr auf die Daten zugreifen kann. Daher muss ich den String in eine anonyme sub umwandeln. Aber nur in diesem Fall.

2013-04-18T23:03:30 Raubtier
Sind es also Performancegründe? Sind die gebenchmarkt?


Das Benchmarking habe ich vor. Man hat viel gehört, was langsam und schnell sein soll, aber das muss man immer austesten, wenn man es wirklich wissen will. Ich mache das aber nur in ausgesuchten Fällen oder falls Performance-Probleme auffallen.

2013-04-18T23:03:30 Raubtier
2013-04-18T23:03:30 jpr65
Aber ob man nun einen String übergibt oder eine Sub-Ref startet, darin kann alles passieren. Dieser Part kann und darf nur vom Entwickler gefüllt werden, da sehe ich kein Problem.


Mein Punkt war hier, dass es auch an unerwarteten Stellen, wie eben beim Setzen einer Größe (wie hier einer Spaltenbreite), die eigentlich eine Zahl sein sollte, zu Problemen kommen kann, wenn man nicht sehr genau aufpasst und diese eben von außen kommen lässt. Niemand vermutet, dass man damit Code ausführen kann. Daher sollte es auch nicht gehen.

Zusätzlich hast du auch die drei subs
Code: (dl )
1
2
3
sub const_length_L
sub const_length_R
sub const_length_C

und dann werden solche Dinge getrieben wie $left   = "const_length$align($width, ".$left;, was dann später geevalt wird. Ich halte das für extrem schlechten Stil.


Ja, wenn ich nicht sowieso schon eval("string") durchführen würde, dann würde ich das auch nicht machen.

2013-04-18T23:03:30 Raubtier
Ebenso übrigens in deinem Example das my $report = new Report::EasyReportGenerator(); - dieser indirekte Funktionsaufruf ist unschön und ich würde das besser als my $report = Report::EasyReportGenerator->new(); schreiben.


Interessant, ich wusste gar nicht, dass das möglich ist. Sieht besser aus.

View full thread EasyReportGenerator: New CPAN module in development