[EP-tech] Re: Random question: Eprint core fields

Ian Stuart Ian.Stuart at ed.ac.uk
Thu Jul 5 10:03:34 BST 2012


On 05/07/12 08:16, Yuri wrote:
> Il 04/07/2012 17:19, Sebastien Francois ha scritto:
>> Yuri,
>>
>> This will work:
>>
>> print $eprint->get_value( 'creators' )->[0];
>>
>> Or:
>>
>> print $eprint->get_value( 'creators' )->[0]->{name}->{given};
>>
>> (but that's not very pretty! :-))
>
> ->[0] is orrible and unthinkable :-)

Not at all.... references are a thing of beauty and power!

"print $eprint->get_value( 'creators' )->[0]->{name}->{given};" breaks 
down very sensibly:

1) use the "get_value" method on the $eprint object, to get the value 
held in "creators". We are told in the documentation (stop laughing at 
the back) that this is a reference to an array.
2) From the reference, get element Zero. We are told in the 
documentation (stop laughing at the back) that this is a reference to an 
associative array.
3) From this reference, get 'name' element. We are told in the 
documentation (stop laughing at the back) that this is a reference to an 
associative array.
4) From this reference, get 'given' element. We are told in the 
documentation (stop laughing at the back) that this is a scalar value, a 
"string".
5) Print the string.


Not to blow my own trumpet or anything, but have a look at 
http://devel.edina.ac.uk:1201/cgi/api5?format=text&org=4407 for an 
example of a fairly complex perl nested data-object.

Anything in {} is a hash, anything in [] is a list.
'dec_lower' => '147.64.0.0' is a simple hash element
'identities' => [{},{}] is a hash element who's value is a reference to 
an anonymous array, each of who's elements are (in turn) references to 
an anonymous hash (and I'm not showing data in the hashes)




-- 

Ian Stuart.
Developer: ORI, RJ-Broker, and OpenDepot.org
Bibliographics and Multimedia Service Delivery team,
EDINA,
The University of Edinburgh.

http://edina.ac.uk/

This email was sent via the University of Edinburgh.



The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.



More information about the Eprints-tech mailing list