Ik doe het volgende:
Wat ik doe hier is ik lees een regel in, split het op de spaties. Dan krijg ik een array met getallen over. Nu wil ik al die getallen gebruiken verderop in het programma. In principe kan je daar een 2D array voor gebruiken. Vanwege een bepaalde functie aanroep, wil ik allemaal losse 1D arrays hebben. Variabele variabele namen zijn uit den boze (en heb ik nog niet uitgevonden in Perl
), vandaar dat ik voor de references kies.
Nu is mijn vraag: is dit de juiste manier? Als ik met behulp van print (regel 11 en 12 van de bovenstaande code) controleer waar de reference naar verwijst, dan krijg ik de juiste getallen terug. Maar mijn ervaring met C/C++ leert mij dat geheugen niet altijd direct wordt overschreven en dus somes gewoon 'beschikbaar' blijft en de juiste waarden houdt, terwijl er een mogelijkheid is dat het overschreven wordt.
Met andere woorden: is de gebruikte methode zoals hierboven correct? Kan ik aan het einde van het programma nog steeds zeggen:
om nog altijd de waarden van de eerste regel van mijn input te verkrijgen?
Perl:
1
2
3
4
5
6
7
8
9
10
11
12
| my @ref = (); my @values = (); my $i = 0; while (<IN>) { chomp; my $line = $_; my @column = split(' '); $ref[$i] = \@column; $i++; } print @{ $ref[0] }; print @{ $ref[1] }; |
Wat ik doe hier is ik lees een regel in, split het op de spaties. Dan krijg ik een array met getallen over. Nu wil ik al die getallen gebruiken verderop in het programma. In principe kan je daar een 2D array voor gebruiken. Vanwege een bepaalde functie aanroep, wil ik allemaal losse 1D arrays hebben. Variabele variabele namen zijn uit den boze (en heb ik nog niet uitgevonden in Perl
Nu is mijn vraag: is dit de juiste manier? Als ik met behulp van print (regel 11 en 12 van de bovenstaande code) controleer waar de reference naar verwijst, dan krijg ik de juiste getallen terug. Maar mijn ervaring met C/C++ leert mij dat geheugen niet altijd direct wordt overschreven en dus somes gewoon 'beschikbaar' blijft en de juiste waarden houdt, terwijl er een mogelijkheid is dat het overschreven wordt.
Met andere woorden: is de gebruikte methode zoals hierboven correct? Kan ik aan het einde van het programma nog steeds zeggen:
Perl:
1
| my @otherArr = @{ $ref[0] }; |
om nog altijd de waarden van de eerste regel van mijn input te verkrijgen?
[ Voor 3% gewijzigd door PrinsEdje80 op 09-11-2005 08:35 ]
Used to be Down Under... Foto gallery