|
| Lille problem med referencer. Fra : Thorbjoern Ravn Ande~ |
Dato : 28-08-01 18:37 |
|
Jeg sidder og laver noget Perlkode der behandler data fra XML::Simple.
I den sammenhæng har jeg nu en situation hvor jeg har en variabel
$entry som blandt andet indeholder (fra Data::Dumper):
$VAR1 = {
'filename' => [
'/home/zaphod/public_html/YGDRASIL/amkiosk.html'
],
}
Den vil jeg gerne have fisket ud, og med lidt fiflen er jeg nået til
at følgende to linier gør det:
$filename = $entry->{'filename'};
$filename = $$filename[0];
(først følges => og herefter åbnes [..]).
Det jeg gerne vil vide er syntaksen for at koge dem sammen i én. Jeg
har prøvet et sammensurium af paranteser, $ og @, men fejl får jeg.
Er der nogen der kan syntaksen i hovedet?
--
Thorbjoern Ravn Andersen "...plus...Tubular Bells!"
http://bigfoot.com/~thunderbear
| |
Peppe (28-08-2001)
| Kommentar Fra : Peppe |
Dato : 28-08-01 13:11 |
|
Således berettede Thorbjoern Ravn Andersen <ravn@adams.astervej16.dk>
> $filename = $entry->{'filename'};
> $filename = $$filename[0];
> Det jeg gerne vil vide er syntaksen for at koge dem sammen i én. Jeg
> har prøvet et sammensurium af paranteser, $ og @, men fejl får jeg.
Skud fra hoften:
$filename = $entry->{'filename'}[0];
Peppe
--
"Before you criticize someone, walk
Preben "Peppe" Guldberg __/-\__ a mile in his shoes. That way, if
c928400@student.dtu.dk (o o) he gets angry, he'll be a mile away
----------------------oOOo (_) oOOo-- - and barefoot." --Sarah Jackson
| |
Lars Balker Rasmusse~ (28-08-2001)
| Kommentar Fra : Lars Balker Rasmusse~ |
Dato : 28-08-01 15:07 |
|
c928400@student.dtu.dk (Peppe) writes:
> Skud fra hoften:
>
> $filename = $entry->{'filename'}[0];
Skud fra hoften er kun anvendelige når de virker. Test.
--
Lars Balker Rasmussen "Special is bad."
| |
Nezar Nielsen (28-08-2001)
| Kommentar Fra : Nezar Nielsen |
Dato : 28-08-01 15:51 |
|
"Lars Balker Rasmussen" <lars@balker.org> skrev i en meddelelse
news:0fr8twe0sv.fsf@humulus.daimi.au.dk...
> c928400@student.dtu.dk (Peppe) writes:
> > Skud fra hoften:
> >
> > $filename = $entry->{'filename'}[0];
>
> Skud fra hoften er kun anvendelige når de virker. Test.
Men det gør det jo også:
[/cygdrive/g 14:44:11]$ perl
$j={
filename=>['/home/zaphod/public_html/YGDRASIL/amkiosk.html']
};
print $j->{filename}[0];
^D
/home/zaphod/public_html/YGDRASIL/amkiosk.html
:)
--
Mvh. Nezar Nielsen
http://fez.dk/
| |
Peppe (28-08-2001)
| Kommentar Fra : Peppe |
Dato : 28-08-01 16:05 |
|
Således berettede Lars Balker Rasmussen <lars@balker.org>
> c928400@student.dtu.dk (Peppe) writes:
> > Skud fra hoften:
> > $filename = $entry->{'filename'}[0];
> Skud fra hoften er kun anvendelige når de virker. Test.
Snappede eksemplet og det så fint ud ved en hurtig test:
#!/usr/bin/perl -w
$entry = { 'filename' => [ '/path/to/file' ] };
$f1 = $entry->{'filename'};
$f1 = $$f1[0];
print "$f1\n";
$f2 = $entry->{'filename'}[0];
print "$f2\n";
# Tilføjet sidenhen
$f3 = $entry->{'filename'}->[0];
print "$f3\n";
Hvor går det galt for mig?
Peppe
--
"Before you criticize someone, walk
Preben "Peppe" Guldberg __/-\__ a mile in his shoes. That way, if
c928400@student.dtu.dk (o o) he gets angry, he'll be a mile away
----------------------oOOo (_) oOOo-- - and barefoot." --Sarah Jackson
| |
Lars Balker Rasmusse~ (28-08-2001)
| Kommentar Fra : Lars Balker Rasmusse~ |
Dato : 28-08-01 16:33 |
|
c928400@student.dtu.dk (Peppe) writes:
> Således berettede Lars Balker Rasmussen <lars@balker.org>
> > c928400@student.dtu.dk (Peppe) writes:
> > > Skud fra hoften:
>
> > > $filename = $entry->{'filename'}[0];
>
> > Skud fra hoften er kun anvendelige når de virker. Test.
>
> Snappede eksemplet og det så fint ud ved en hurtig test:
Sorry, jeg havde lavet en typo, da jeg testede din kode
Selvom man skyder fra hoften kan man jo godt ramme sin egen fod.
--
Lars Balker Rasmussen "Special is bad."
| |
Thorbjoern Ravn Ande~ (28-08-2001)
| Kommentar Fra : Thorbjoern Ravn Ande~ |
Dato : 28-08-01 22:51 |
|
Lars Balker Rasmussen <lars@balker.org> writes:
> c928400@student.dtu.dk (Peppe) writes:
> > Således berettede Lars Balker Rasmussen <lars@balker.org>
> > > c928400@student.dtu.dk (Peppe) writes:
> > > > Skud fra hoften:
> >
> > > > $filename = $entry->{'filename'}[0];
> >
> > > Skud fra hoften er kun anvendelige når de virker. Test.
> >
> > Snappede eksemplet og det så fint ud ved en hurtig test:
>
> Sorry, jeg havde lavet en typo, da jeg testede din kode
>
> Selvom man skyder fra hoften kan man jo godt ramme sin egen fod.
Jeg mener ellers bestemt at jeg havde forsoegt den variant. Skummelt.
Laves der en usynlig dereferering i ovenstaaende?
--
Thorbjoern Ravn Andersen "...plus...Tubular Bells!"
http://bigfoot.com/~thunderbear
| |
Nezar Nielsen (28-08-2001)
| Kommentar Fra : Nezar Nielsen |
Dato : 28-08-01 18:42 |
|
"Thorbjoern Ravn Andersen" <ravn@adams.astervej16.dk> wrote in message
news:m2n14jg8gf.fsf@adams.astervej16.dk...
> > >
> > > > > $filename = $entry->{'filename'}[0];
>
> Laves der en usynlig dereferering i ovenstaaende?
fra perlreftut:
----klippe-klip----
Arrow Rule
In between two subscripts, the arrow is optional.
Instead of $a[1]->[2], we can write $a[1][2]; it means the same thing.
Instead of $a[0]->[1], we can write $a[0][1]; it means the same thing.
Now it really looks like two-dimensional arrays!
----klippe-klip-slut----
--
Mvh. Nezar Nielsen
http://fez.dk/
| |
Lars Balker Rasmusse~ (28-08-2001)
| Kommentar Fra : Lars Balker Rasmusse~ |
Dato : 28-08-01 15:06 |
|
Thorbjoern Ravn Andersen <ravn@adams.astervej16.dk> writes:
> $VAR1 = {
> 'filename' => [
> '/home/zaphod/public_html/YGDRASIL/amkiosk.html'
> ],
> }
>
> Den vil jeg gerne have fisket ud, og med lidt fiflen er jeg nået til
> at følgende to linier gør det:
>
> $filename = $entry->{'filename'};
> $filename = $$filename[0];
>
> (først følges => og herefter åbnes [..]).
>
> Det jeg gerne vil vide er syntaksen for at koge dem sammen i én. Jeg
> har prøvet et sammensurium af paranteser, $ og @, men fejl får jeg.
>
> Er der nogen der kan syntaksen i hovedet?
Naturligvis, kære formand. Du var på rette vej:
$entry er en reference til en hash, hvorfor du skal bruge $ref->{}.
Det giver en reference til en list, hvorfor du skal bruge $ref->[].
Ergo:
$filename = $entry->{filename}->[0];
--
Lars Balker Rasmussen "Special is bad."
| |
Thorbjoern Ravn Ande~ (28-08-2001)
| Kommentar Fra : Thorbjoern Ravn Ande~ |
Dato : 28-08-01 21:27 |
|
Lars Balker Rasmussen <lars@balker.org> writes:
> $entry er en reference til en hash, hvorfor du skal bruge $ref->{}.
> Det giver en reference til en list, hvorfor du skal bruge $ref->[].
>
> Ergo:
> $filename = $entry->{filename}->[0];
Løvely! Wørker.
Takker ærbødigst
Har imellemtiden fundet ud af at bruge HTML::TreeBuilder. Den er en
anelse for viderekomne.
--
Thorbjoern Ravn Andersen "...plus...Tubular Bells!"
http://bigfoot.com/~thunderbear
| |
Nezar Nielsen (28-08-2001)
| Kommentar Fra : Nezar Nielsen |
Dato : 28-08-01 15:27 |
|
"Thorbjoern Ravn Andersen" <ravn@adams.astervej16.dk> skrev i en meddelelse
news:m2lmk413z1.fsf@adams.astervej16.dk...
>
> $VAR1 = {
> 'filename' => [
> '/home/zaphod/public_html/YGDRASIL/amkiosk.html'
> ],
> }
>
> Den vil jeg gerne have fisket ud, og med lidt fiflen er jeg nået til
> at følgende to linier gør det:
>
> $filename = $entry->{'filename'};
> $filename = $$filename[0];
>
> (først følges => og herefter åbnes [..]).
>
> Det jeg gerne vil vide er syntaksen for at koge dem sammen i én. Jeg
> har prøvet et sammensurium af paranteser, $ og @, men fejl får jeg.
>
> Er der nogen der kan syntaksen i hovedet?
Hejsa,
Dereferer og pak ud med pile, det er IMO mest overskueligt:
hash-nøglen 'filename' fra hashreffet "$entry": $entry->{filename}
første element af arrayreffen "$entry->{filename}": $entry->{filename}->[0]
--
Mvh. Nezar Nielsen
http://fez.dk/
| |
|
|