Hmmm, I assume you'd like to access the string/text in Frame. In this case you have to invoke render or toString. The frame is just a container of both data and meta info. Further, in TagLib, string/text is ALWAYS wrapped as an instance of String in order to abstract the locale/encoding issue.
<br><br>Also, in C++ code, you can find:<br>---------------------------------------------------------------<br>### id3v2tag.h ###<br><pre class="fragment">00033 <span class="keyword">namespace </span>TagLib {<br>00034 <br>
00035   <span class="keyword">class </span>File;<br>00036 <br>00038 <br>00046   <span class="keyword">namespace </span>ID3v2 {<br>00047 <br>00048     <span class="keyword">class </span>Header;<br>00049     <span class="keyword">
class </span>ExtendedHeader;<br>00050     <span class="keyword">class </span>Footer;<br>00051 <br><a name="l00052"></a><a class="code" href="http://developer.kde.org/%7Ewheeler/taglib/api/namespaceTagLib_1_1ID3v2.html#a0">
00052</a>     <span class="keyword">typedef</span> <a class="code" href="http://developer.kde.org/%7Ewheeler/taglib/api/classTagLib_1_1List.html">List&lt;Frame *&gt;</a> <a class="code" href="http://developer.kde.org/%7Ewheeler/taglib/api/classTagLib_1_1List.html">
FrameList</a>;<br>------------------------------------<br>The symbol is declared as a list of TagLib::ID3v2::Frame pointers, while <br>in Perl I present as an instance. Inside, the same:<br>RV contains stash -&gt; SV contains memory address
<br><br>Currently, in case the return type of C++ method is virtual(interface-like),<br>I just make the same general stash. Inside C++ code, there might be dynamic <br>binding. This will possibly mask some extra methods in the real subclass' 
<br>namespace. I refused to take the runtime type identification method since <br>most of the cases you just get a known namespace once you get something from <br>C stack.<br></pre>Anyone comments me if error words;-)<br>
<br><div><span class="gmail_quote">On 3/3/06, <b class="gmail_sendername"><a href="mailto:taglib-devel-request@kde.org">taglib-devel-request@kde.org</a></b> &lt;<a href="mailto:taglib-devel-request@kde.org">taglib-devel-request@kde.org
</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Send taglib-devel mailing list submissions to<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="mailto:taglib-devel@kde.org">
taglib-devel@kde.org</a><br><br>To subscribe or unsubscribe via the World Wide Web, visit<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://mail.kde.org/mailman/listinfo/taglib-devel">https://mail.kde.org/mailman/listinfo/taglib-devel</a><br>or, via email, send a message with subject or body 'help' to
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="mailto:taglib-devel-request@kde.org">taglib-devel-request@kde.org</a><br><br>You can reach the person managing the list at<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="mailto:taglib-devel-owner@kde.org">taglib-devel-owner@kde.org
</a><br><br>When replying, please edit your Subject line so it is more specific<br>than &quot;Re: Contents of taglib-devel digest...&quot;<br><br><br>Today's Topics:<br><br>&nbsp;&nbsp; 1. perl bindings ID3v2::Frame subclasses&nbsp;&nbsp;(Aaron VonderHaar)
<br><br><br>----------------------------------------------------------------------<br><br>Message: 1<br>Date: Thu, 2 Mar 2006 20:06:41 -0800<br>From: Aaron VonderHaar &lt;<a href="mailto:gruen0aermel@gmail.com">gruen0aermel@gmail.com
</a>&gt;<br>Subject: perl bindings ID3v2::Frame subclasses<br>To: <a href="mailto:taglib-devel@kde.org">taglib-devel@kde.org</a><br>Message-ID: &lt;<a href="mailto:02F4556B-4800-4097-A5F7-D60FCDD7C6C9@gmail.com">02F4556B-4800-4097-A5F7-D60FCDD7C6C9@gmail.com
</a>&gt;<br>Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed<br><br>I'm trying to use the Audio::TagLib perl bindings to access ID3v2-<br>specific frames, but when I iterate through the FrameList, all the
<br>frames seem to be instances of Frame and not of the correct subclasses.<br><br>my $file = Audio::TagLib::FileRef-&gt;new(&quot;test.mp3&quot;);<br>my $tag = Audio::TagLib::ID3v2::Tag-&gt;new($file-&gt;file, 0);<br><br>
tie my @frames, ref($tag-&gt;frameList()), $tag-&gt;frameList();<br><br>foreach my $frame (@frames) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print ref($frame), &quot;\n&quot;;&nbsp;&nbsp;### This prints<br>&quot;Audio::TagLib::ID3v2::Frame&quot; for every frame
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eval { print $frame-&gt;text(), &quot;\n&quot;; };&nbsp;&nbsp;### This fails even<br>for COMM frames<br>}<br><br>How can I determine the class of the frame, and how can I access the<br>member functions for each subclass?
<br><br>Thanks,<br>Aaron V.<br><br><br>------------------------------<br><br>_______________________________________________<br>taglib-devel mailing list<br><a href="mailto:taglib-devel@kde.org">taglib-devel@kde.org</a><br>
<a href="https://mail.kde.org/mailman/listinfo/taglib-devel">https://mail.kde.org/mailman/listinfo/taglib-devel</a><br><br><br>End of taglib-devel Digest, Vol 21, Issue 2<br>*******************************************<br>
</blockquote></div><br><br clear="all"><br>-- <br>Cheers, Dongxu