miten saan kutsuttua aliohjelmaa muuttujan avulla :
$muuttuja = "auto";
$vastaus = &sub::$muuttuja('lada');
ei toimi, mutta :
$vastaus = &sub::auto('lada');
toimii kuten pitääkin.
aliohjelma kutsuminen muuttujalla
3
1058
Vastaukset
- perliä
Tuliko vihdoinkin niin vaikea, ettei löytynyt vastatusta :)
Luova evalin käyttö tuntui ainakin toimivan:
#!/usr/bin/perl -w
sub auto {
print "auto:@_\n";
return 1;
}
sub auto2 {
print "auto2:@_\n";
return 2;
}
my $muuttuja = "auto";
my $vastaus = eval qq/$muuttuja("lada");/;
print "vastaus=$vastaus\n";
$muuttuja = "auto2";
$vastaus = eval qq/$muuttuja("lada");/;
print "vastaus 2=$vastaus\n";
- *BSD
Tohon on kaksi tapaa:
1. Kutsut funktiota "synbolisen linkin kautta"
{
' no strict 'refs';
' my $muuttuja = 'foo';
' &{ $muuttuja }();
}
Kun aina käytät 'use strict' niin tarvitsee ton blokin aikana käskyttää, ettei välitä noista (no strict ..).
2. Pistät sen funktion "viittauksen" muuttujaan:
my $ref = \&foo;
&{ $ref }();
Kohta 2. on suositeltu.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Saako kaunis ihminen parempaa kohtelua?
Onko kauniin ihmisen elämä "helpompaa" kuin tavallisen näköisen ihmisen? Olen kuullut väittämän, että kaunis ihminen saa1363717- 122466
En rehellisesti usko et oisit
Sekuntiakaan oikeasti mua kaivannut. Tai edes miettinyt miten mulla menee. Jotenkin todennäköisesti hyödyt tästäkin jos371975Näin sinusta taas unta!
Unessa olin pakahtuneesti rakastunut sinuun. Olimme vanhassa talossa jossa oli yläkerran huoneissa pyöreät ikkunat. Pöly211731Paljonko aikaa on kulunut siitä kun viimeksi tapasit hänet?
Päiviä? Viikkoja? Kuukausia? Vuosia?301503- 1241468
En muuttaisi sinusta mitään
Ensin olit etäinen ja yritin pysyä tutkan alapuolella. Mutta ei silmiltäsi jää mitään huomaamatta, kuten minulla ei kuul101311- 141256
Se oli siinä sitten
Yhdysvaltain presidentti Donald Trump on määrännyt kaiken maan Ukrainalle toimittaman sotilaallisen tuen tauolle, kertoo4831244- 771191