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
1148
Vastaukset 3
- 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
Ampuminen kylpylässä
Onko vornasen timbe käynyt hiukan kylpemässä vai mikä tämä ampumatapaus on kylpylässä? Tuntuu aika villi meno olevan naa751679- 241186
Kemijärvellä vesionnettomuus
Pitkänsillan ja taiteilijanniemen välillä nähty henkilön painuvan veden alle. Mitä on tapahtunut? Onko vesihiisi taas as321083Hei, voitko kuunnella
Voisitko auttaa minua selvittämään asioita? En halua ajaa sinua hulluuteen kanssani, en sitoa sinua, en esittää vaatimu134916Joku porukka lähtenyt täältä
Ihmeen hiljainen on palsta nyt. Yleensä tänne tulvii aloituksia yms, mutta nyt on kyllä erikoisen hiljaista.189826- 64694
Olipa yllätys
Kuten hyvin moni tiesi/arvasi että valetta alusta loppuun toi *olemme ystäviä* satu. Instassaan käsi kädessä kuva kertoo192619On todella ikävää
Todella ikävää, että asiat ovat menneet tällaisiksi. Tämä ei ollut missään vaiheessa tarkoitukseni. Olen tehnyt virheit79598- 49571
- 71567
Se kun olit pitkästä aikaa silmieni edessä
Oli kyllä sykähdyttävää. Tiedätkö, mikä laittaa minut ikävöimään sinua? Kun palautan mieleeni valtavan ihanan olemuksen,32518- 55517
- 57485
Oletteko koskaan torjuneet kaivattuanne?
Minä olen, kun en silloin tajunnut vielä ihastuneeni. Yritin paikata tapahtunutta, mutta ei onnistunut enää.25457- 34434
Kai sä mies ymmärrät..
..ettet jättänyt vaihtoahtoa. Tottakai toivon vielä, että pystyisit toimimaan niin että asiat korjaantuisivat. Vahvast28432- 33423
- 40417
- 16409
- 82398