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
1147
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
- 1251248
Tiedät, että en voi enää laittaa viestiä
Aikaa kulunut. Eikä se näyttäisi enää luontevalta vastata näin pitkän ajan jälkeen. Tiedän myös, että sinä et enää lait89914- 94884
Nostetaanpas kissa pöydälle: Onko Kuhmossa työpaikkakiusaamista?
Kuka uskaltaa puhua? Vai uskaltaako kukaan? Naisvaltaisella alalla on kuulemma Kuhmossa ruma tilanne. Mitä aikuiset ede22818Tuleeko Martinasta rouva Muhis
Saako vihdoinkin ne haaveilemansa prinsessa häät Hajjin entinen Muhammad kanssa, 😂 yhteistä heillä on se, että molemmat283723- 93717
- 109636
- 33617
Oletko miettinyt sitä
Että jos meidän persoonat ei sovi yhtään yhteen ;) No onneksi kumpikin on fiksu eikä halua toiselle mitään pahaa.50571Eipä oo näkyny montakkasn etelänvetelää vielä kylällä.
Liekkö tuo pensanhinta vetelille liian kallista, kun ovat jeäneet kesäksi kottiinsa vetelehtimmään. Pärjätään iliman vet125540