perl probleempje

Moderators: jkien, Xilvo

Reageer
Gebruikersavatar
Berichten: 720

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

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.
Gebruikersavatar
Moderator
Berichten: 3.202

Re: perl probleempje

Ik ken perl nauwelijks maar ik zie wel dat je "$" voor een array gebruikt. Dat zal een "@" moeten zijn.

Gebruikersavatar
Berichten: 720

Re: perl probleempje

Xilvo schreef:
di 25 feb 2020, 11:43
Ik ken perl nauwelijks maar ik zie wel dat je "$" voor een array gebruikt. Dat zal een "@" moeten zijn.
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.

Gebruikersavatar
Berichten: 720

Re: perl probleempje

dannypje schreef:
di 25 feb 2020, 11:55
Xilvo schreef:
di 25 feb 2020, 11:43
Ik ken perl nauwelijks maar ik zie wel dat je "$" voor een array gebruikt. Dat zal een "@" moeten zijn.
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.
hm, net geprobeerd, dat werkte ook niet zoals het moest vrees ik.

Gebruikersavatar
Moderator
Berichten: 3.202

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.

Gebruikersavatar
Berichten: 720

Re: perl probleempje

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.
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.
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.

Gebruikersavatar
Moderator
Berichten: 3.202

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.

Gebruikersavatar
Berichten: 720

Re: perl probleempje

Zal dat straks s proberen. Thx


Gebruikersavatar
Berichten: 720

Re: perl probleempje

Xilvo schreef:
di 25 feb 2020, 14:31
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.
De array op voorhand aanmaken helpt blijkbaar ook niet.

Gebruikersavatar
Moderator
Berichten: 3.202

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!

Gebruikersavatar
Berichten: 720

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).

Gebruikersavatar
Moderator
Berichten: 3.202

Re: perl probleempje

dannypje schreef:
di 25 feb 2020, 17:15
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).
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 :)

Reageer