It looks like the problem is that a 64-bit signed value (typeComp) for the photo ID is returned via the Apple event, but iPhoto won't accept it back! It needs to be coerced into something else, such as typeFloat or typeLongInteger.
How ridiculous for iPhoto to not accept back a value it returns! Somehow, AppleScript "knows" to coerce it into typeFloat. Anyway, this works for me: use Mac::Glue ':all'; my $iphoto = new Mac::Glue 'iPhoto'; my $sel = $iphoto->prop('selection'); for my $photo ($sel->get) { # my $comment = $photo->prop('comment')->get; # should work my $comp = AEGetKeyDesc($photo->{DESC}, keyAEKeyData); my $doub = AECoerceDesc($comp, typeFloat); my $id = $doub->get; AEDisposeDesc $doub; my $newphoto = $iphoto->obj(photo => whose(ID => equals => $id)); my $comment = $newphoto->prop('comment')->get; } I suppose I should add a way to get the data of an object specifier record more easily, so you don't need to go through all that, something like: my $id = $photo->getdata; And then repeat the last two lines: my $newphoto = $iphoto->obj(photo => whose(ID => equals => $id)); my $comment = $newphoto->prop('comment')->get; Of course, the problem remains, how does AppleScript know that it can't use the same value that iPhoto returned? Note that the aete for iPhoto says nothing about types comp OR float, it says to use typeLongInteger for ID, so that doesn't help. :-) -- Chris Nandor [EMAIL PROTECTED] http://pudge.net/ Open Source Development Network [EMAIL PROTECTED] http://osdn.com/