perl probleempje
- Berichten: 768
perl probleempje
Hi,
ik probeer met onderstaand perl progje 3 keer een lijn in te lezen van 7 karakters, deze te splitsen en op te slaan in een 2-dimensionale array, en daarna terug af te printen.
Bij het printen krijg ik echter 3 keer mijn laatste input te zien, in plaats van de 3 verschillende inputs.
Dus inputs 1111111, 2222222, 3333333 geven als resultaat 3333333,3333333,3333333.
Ik kan het probleem zo niet direct ontdekken. Iemand een idee ?
for ($i=1;$i<=3;$i++)
{
$ingang=<>;
chomp $ingang;
#print "in =",$ingang;
($a[$i,1],$a[$i,2],$a[$i,3],$a[$i,4],$a[$i,5],$a[$i,6],$a[$i,7])=split('',$ingang);
}
print "Resultaat\n";
for ($p=1;$p<=3;$p++)
{
for ($j=1;$j<=7;$j++)
{
print $a[$p,$j];
}
print "\n";
}
Geeft dus
1111111
2222222
3333333
Resultaat
3333333
3333333
3333333
TIA
ik probeer met onderstaand perl progje 3 keer een lijn in te lezen van 7 karakters, deze te splitsen en op te slaan in een 2-dimensionale array, en daarna terug af te printen.
Bij het printen krijg ik echter 3 keer mijn laatste input te zien, in plaats van de 3 verschillende inputs.
Dus inputs 1111111, 2222222, 3333333 geven als resultaat 3333333,3333333,3333333.
Ik kan het probleem zo niet direct ontdekken. Iemand een idee ?
for ($i=1;$i<=3;$i++)
{
$ingang=<>;
chomp $ingang;
#print "in =",$ingang;
($a[$i,1],$a[$i,2],$a[$i,3],$a[$i,4],$a[$i,5],$a[$i,6],$a[$i,7])=split('',$ingang);
}
print "Resultaat\n";
for ($p=1;$p<=3;$p++)
{
for ($j=1;$j<=7;$j++)
{
print $a[$p,$j];
}
print "\n";
}
Geeft dus
1111111
2222222
3333333
Resultaat
3333333
3333333
3333333
TIA
- Moderator
- Berichten: 9.974
Re: perl probleempje
Ik ken perl nauwelijks maar ik zie wel dat je "$" voor een array gebruikt. Dat zal een "@" moeten zijn.
- Berichten: 768
Re: perl probleempje
Bedankt Silvo,
ja, ik weet dat @ het symbool is voor een perl array, maar ik denk dat je de individuele elementen ook met een $ kunt accesseren, maar ik probeer het s uit.
- Berichten: 768
Re: perl probleempje
- Moderator
- Berichten: 9.974
Re: perl probleempje
Zoals ik zei, ik ben nauwelijks bekend met deze taal.
Wat ik zou proberen is eerder wat resultaten af te drukken, bijvoorbeeld tussen de loops, waar je 'resultaat' print.
Bijvoorbeeld @a[$1,$1], @a[$2,$1]. Gaat het daar al mis, dan meteen na het splitten. Langzaam de plaats waar het fout gaat lokaliseren.
Wat ik zou proberen is eerder wat resultaten af te drukken, bijvoorbeeld tussen de loops, waar je 'resultaat' print.
Bijvoorbeeld @a[$1,$1], @a[$2,$1]. Gaat het daar al mis, dan meteen na het splitten. Langzaam de plaats waar het fout gaat lokaliseren.
- Berichten: 768
Re: perl probleempje
jeps, dat heb ik ook geprobeerd, en dat is wat mij zo raar lijkt. Als ik de 3 arrays afdruk in de lus waarin ik ze binnen krijg, dan krijg ik mooi mijn 3 ingegeven waarden te zien.Xilvo schreef: ↑di 25 feb 2020, 12:21 Zoals ik zei, ik ben nauwelijks bekend met deze taal.
Wat ik zou proberen is eerder wat resultaten af te drukken, bijvoorbeeld tussen de loops, waar je 'resultaat' print.
Bijvoorbeeld @a[$1,$1], @a[$2,$1]. Gaat het daar al mis, dan meteen na het splitten. Langzaam de plaats waar het fout gaat lokaliseren.
Doe ik dat net _buiten_ de lus, dan krijg ik 3 keer mijn laatste invoer te zien.
En _dat_ vind ik heel raar. Het lijkt precies alsof die andere input variabelen maar bestaan binnen de lus. Doet me denken aan lokale variabelen en zo, maar dat is volgens mij hier niet het geval.
Ondertussen heb ik het probleem opgelost door te werken met een 1-dimensionale array, dus mijn dingetje werkt nu wel, maar dat het niet werkt met een 2-dimensionale array blijft me intrigeren.
- Moderator
- Berichten: 9.974
Re: perl probleempje
Ja, misschien heeft het met de 'scope' van de variabelen te maken. Hoe dat werkt in perl weet ik niet.
Als je de 2-dim array nu eens aanmaakt voordat je aan de eerste lus begint?
Geen idee of het werkt maar het lijkt me het proberen waard.
Als je de 2-dim array nu eens aanmaakt voordat je aan de eerste lus begint?
Geen idee of het werkt maar het lijkt me het proberen waard.
- Berichten: 768
Re: perl probleempje
De array op voorhand aanmaken helpt blijkbaar ook niet.
- Moderator
- Berichten: 9.974
Re: perl probleempje
Het spijt me, zoals ik al schreef, ik ken perl nauwelijks en het is niet efficient mij de hele taal te laten leren om jouw vraag te beantwoorden.
Ik hoop dat je een bruikbare reactie van een ander forumlid krijgt.
Succes!
Ik hoop dat je een bruikbare reactie van een ander forumlid krijgt.
Succes!
- Berichten: 768
Re: perl probleempje
Probleem opgelost. Perl stelt multidimensionale arrays voor als $a[p][q], niet als $a[p,q]. (en ik wist dit! Maar vandaag even niet dus).
- Moderator
- Berichten: 9.974
Re: perl probleempje
Mooi!
In Python adresseer je 2-dim lists als als a[p][q], numpy-arrays als a[p,q]. Dus ik ken het probleem.
Maar had niet verwacht dat dat hier ook het probleem was