@tmp = sort { (${ORG[$a]->{adanaid}} <=> ${ORG[$b]->{adanaid}}) } 0 .. $#ORG;
foreach (@tmp) {
    print 'person='. $ORG[$_]->{person}. "\n";
    print 'adana='. $ORG[$_]->{adana}. "\n";
    print 'adanaid='. $ORG[$_]->{adanaid}. "\n";
}

で、
なぜ、sortのときには
${ORG[$a]->{adanaid}}
なのに、printのときは、
$ORG[$_]->{adanaid}
のようになるのでしょうか?

つまり、なぜ
@tmp = sort { ($ORG[$a]->{adanaid} <=> $ORG[$b]->{adanaid}) } 0 .. $#ORG;
ではダメなんでしょう?

このときの{}にはどんな意味があるのでしょうか?