User since
2007-12-06
79
Artikel
BenutzerIn
Hi beisammen.
require 5.006;
use Switch;
Ist das so abgedeckt, oder steht Switch erst ab einer späteren Version zur Verfügung?
-uw
User since
2007-12-06
79
Artikel
BenutzerIn
Die Frage hatte eher vorbeugenden Charakter.
Ich habe das so programmiert. Auf meinem System ist jedoch Perl 5.008 und bei funktioniert das auch problemlos. Jedoch entwickle ich ein System, dass auch auf anderen Maschinen laufen soll.
-uw
User since
2004-03-22
5697
Artikel
ModeratorIn + EditorIn
User since
2005-01-17
14788
Artikel
Admin1
[quote=TbHoCne,12.05.2006, 15:33]Auf meinem System ist jedoch Perl 5.008 und bei funktioniert das auch problemlos. Jedoch entwickle ich ein System, dass auch auf anderen Maschinen laufen soll.[/quote]
Warum entwickelst du nicht mit mehreren Perl-Versionen?
User since
2007-12-06
79
Artikel
BenutzerIn
Hi,
ok, dann sollte ich auf switch eher verzichten. Ist ja kein Beinbruch.
Mit mehreren Versionen zu entwickeln, das wäre komplettes Neuland für mich. Da ich aber vorankommen muss, stelle ich das erst einmal hinten an. Dennoch frage ich aber an, ob es für solche Sachen gute Tutorials gibt.
Der Link zum PerlDelta ist schon mal sehr gut. Vielen Dank an lichtkind. Werde das eigehend studieren.
-uw
User since
2003-08-04
12208
Artikel
Admin1
Switch würd ich sowieso nicht verwenden, ist ein source-filter.
User since
2003-08-04
5246
Artikel
ModeratorIn
ich muss gestehen, anstelle von switch lieber mit einem hash zu arbeiten... also wenn z.B. bei einem cgi immer ueber den parameter action an subroutinen verzweigt werden soll, dann verwende ich haeufig sowas wie das folgende:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package MyApp::Config;
use vars qw($ActionsHRef);
use Readonly $ActionsHRef =>
{
default => {
subroutine => \&ActionDefault,
template => 'action_default.tmpl',
},
overview => {
subroutine => \&ActionOverview,
template => 'action_overview.tmpl',
maxEntriesPerPage => 40,
},
# ...
};
package main; # hauptprogramm
use CGI;
my $cgi = CGI->new();
my $action = $cgi->param('action') || 'default'; # action nie 0
my $dbh = DBI->connect($dsn, $user, $pw)
or die ...;
my $subRef;
if( exists $MyApp::Config::ActionsHRef->{$action} ) {
$subRef = $MyApp::Config::ActionsHRef->{$action}->{subroutine};
} # if
else {
$subRef = $MyApp::Config::ActionsHRef->{'action_error'};
} # else
my ($templateFile, $params) = $subRef->( $cgi, $dbh, $action );
print $cgi->header();
my $template = &ReadAndFillTemplate( $templateFile, %DefaultParams, %$params );
$template->output();
# -----------------------------------------
sub ActionDefault {
my ($cgi, $dbh, $action) = @_;
# mach was...
my %params = (p1 => 'v1', p2 => 'v2');
return ($MyApp::Config::ActionsHRef->{$action}->{template}, \%params);
} # ActionDefault
oder so aehnlich
User since
2003-11-28
3645
Artikel
ModeratorIn
[quote=pq,12.05.2006, 21:09]Switch würd ich sowieso nicht verwenden, ist ein source-filter.[/quote]
Ack. Switch hat wirklich schlimme Bugs. Aber ab perl 5.10 kann man ja given/when verwenden.