1
2
3
4
5
6
7
8
private function isErrorAvailable($error) {
if(defined('self::' . $error)) {
return true;
}
else {
return false;
}
}
1 2 3 4 5
say "yes" if defined &CONSTANT_NAME; # oder my $name = "CONSTANT_NAME"; say "yes" if defined &{ $name };
2012-08-02T11:15:20 TheMicVon mir aus kann man den Thread nun schließen.
2012-08-02T11:57:26 pqhabe bisher den sinn noch nicht verstanden.
2012-08-02T11:57:26 pqallein aus programmierer- oder admin-sicht ist ein archivieren günstig, da man das datenbanktechnisch optimieren kann, aber als user finde ich das meist ärgerlich, da man auf alte threads nicht mehr antworten kann, und dazu kann es ja mehrere gründe geben.
defined &CONSTANT_NAME
defined \&CONSTANT_NAME
if (__PACKAGE__->can('KONSTANTE'));
2012-08-02T11:22:06 MuffiVielleicht ist es meinen Hirn auch grad zu heiss, aber
Code (perl): (dl )defined &CONSTANT_NAME
returnt doch den Wert der Konstante und checkt auf defined.
1 2 3 4 5 6 7 8 9 10 11 12
use strict; use warnings; use v5.010; use constant FOO => 23; sub BAR { say 23 } use constant OOF => undef; say "FOO" if defined &FOO; say "BAR" if defined &BAR; say "NONE" if defined &NONE; say "OOF" if defined &OOF;
QuoteYou may also use "defined(&func)" to check whether subroutine &func has
ever been defined.
Quote
if (UNIVERSAL::can(__PACKAGE__, 'KONSTANTE'))
2012-08-02T11:41:25 MuffiAchja, das can ohne Vererbung müsst dann
Code (perl): (dl )if (UNIVERSAL::can(__PACKAGE__, 'KONSTANTE'))
sein.
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
use strict; use warnings; use v5.010; package PARENT; use constant PARENT_ONLY => 23; use constant BOTH => 42; package CHILD; use base 'PARENT'; use constant CHILD_ONLY => 99; use constant BOTH => 42.1; for my $name (qw/ PARENT_ONLY BOTH CHILD_ONLY /) { if (my $coderef = __PACKAGE__->can($name)) { my $result = $coderef->(); say "CHILD->can($name), result=$result"; } if (my $coderef = UNIVERSAL::can(__PACKAGE__, $name)) { my $result = $coderef->(); say "UNIVERSAL::can(CHILD, $name), result=$result"; } }
1
2
3
4
5
6
CHILD->can(PARENT_ONLY), result=23
UNIVERSAL::can(CHILD, PARENT_ONLY), result=23
CHILD->can(BOTH), result=42.1
UNIVERSAL::can(CHILD, BOTH), result=42.1
CHILD->can(CHILD_ONLY), result=99
UNIVERSAL::can(CHILD, CHILD_ONLY), result=99
2012-08-02T11:22:06 MuffiAchja, persönlicher Geschmack, aber ich hätt:
Code (perl): (dl )if (__PACKAGE__->can('KONSTANTE'));
genommen