Estou desenvolvendo um programa para obtenção de dados e controle de equipamentos para um laboratório de pesquisa de Física. Os equipamentos estão interfaceados por GPIB e são entidades no Jabber. Através de uma sala de bate papo no Jabber eu controlo tudo.
<br><br>A questão é que alguns pesquisadores preferem usar alguns recursos, outros não. para fazer um programa que se adaptasse a todos, fui obrigado a transformar alguns recursos em objeto, como o gráfico em tempo real,&nbsp; por exemplo (optamos por fazer tudo em canvas/Tk para ter o controle total do gráfico).
<br><br><div><span class="gmail_quote">On 11/30/06, <b class="gmail_sendername">Lorn</b> &lt;<a href="mailto:lorn.br@gmail.com">lorn.br@gmail.com</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;">
Qual a vantagem de eu tranformar um programa em perl normal em objeto?<br>alem dele ficar &quot;abençoado&quot; :P<div><span class="e" id="q_10f38f4a75af603a_1"><br><br><br><div><span class="gmail_quote">On 11/30/06, <b class="gmail_sendername">
Adriano Ferreira</b> &lt;
<a href="mailto:a.r.ferreira@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">a.r.ferreira@gmail.com</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;">
On 11/30/06, Leonardo Soares &lt;
<a href="mailto:lsmsoares@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">lsmsoares@gmail.com</a>&gt; wrote:<br>&gt; Prezados Senhores,<br>&gt;<br>&gt;<br>&gt; Sou novato em Perl (2 meses) e estou trasnformando em objeto um programa.
<br>&gt;<br>&gt; Eu me deparei com o seguinte problema: Transformar a seguinte linha de
<br>&gt; código<br>&gt;<br>&gt;&nbsp;&nbsp;$num_dados = $#datax;<br>&gt;<br>&gt; Em algo do tipo:<br>&gt;<br>&gt;&nbsp;&nbsp;$self-&gt;{num_dados} = ???????;<br><br>$self-&gt;{num_dados} = $#datax;&nbsp;&nbsp;#&nbsp;&nbsp;?!?!<br><br>Esta seria a resposta se, no seu projeto, você estivesse transformando
<br>a variável $num_dados em um atributo do objeto (representado como um<br>hash abençoado), e tivesse os mesmos dados no mesmo array @datax. No<br>entanto se @datax também é para ser transformado em um atributo do<br>objeto, ele tem de ser transformado em referência (porque apenas
<br>referências são guardadas em um hash) e você poderia usar algo como<br><br>$self-&gt;{num_dados} = scalar @{$self-&gt;{datax}} - 1;<br><br>Ah, e de qualquer jeito, a prudência e a canja de galinha recomendam<br>que você use para determinar o tamanho de um array - 1 a expressão
<br><br>&nbsp;&nbsp;&nbsp;&nbsp; scalar @a - 1<br><br>ao invés de<br><br>&nbsp;&nbsp;&nbsp;&nbsp; $#a<br><br>porque alguém (ou algum pedaço de código) malvado pode mexer com $[ e<br>lhe trazer resultados inesperados. Leia sobre isto em 'perldoc<br>perlvar'.<br>

<br>Exemplos:<br><br>$ perl -e '@a = (1,2); print $#a'<br>1<br><br>$ perl -e '@a = (1,2); $[ = 1; print $#a'<br>2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt; epa! isto é&nbsp;&nbsp;&nbsp;&nbsp; $[ + scalar @a - 1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt; porque a mal comportada variável $[
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt; permite mudar o primeiro índice de<br>todos arrays<br><br>$ perl -e '@a = (1,2); print scalar @a - 1'<br>1<br><br>$ perl -e '@a = (1,2); $[ = 1; print scalar @a - 1'<br>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt; continua o mesmo
<br><br>&gt;<br>&gt; Como fica ?????<br>&gt;<br>&gt;<br>&gt; Saudações,<br>&gt;<br>&gt; Leo.<br>&gt;<br>&gt; --<br>&gt; Meu Blog:<br>&gt;&nbsp;&nbsp;<a href="http://mundoaoleo.blogspot.com/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://mundoaoleo.blogspot.com/</a><br>&gt; _______________________________________________
<br>&gt; Cascavel-pm mailing list<br>&gt; <a href="mailto:Cascavel-pm@pm.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">Cascavel-pm@pm.org</a><br>&gt; <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
&gt;<br>&gt;<br>_______________________________________________<br>Cascavel-pm mailing list<br><a href="mailto:Cascavel-pm@pm.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">Cascavel-pm@pm.org
</a><br><a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://mail.pm.org/mailman/listinfo/cascavel-pm
</a><br></blockquote></div><br><br clear="all"><br></span></div><span class="sg">-- <br>Lorn <br>- Slackware Linux<br><a href="http://www.slackwarezine.com.br" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
www.slackwarezine.com.br</a><br>- <a href="http://lornlab.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://lornlab.org</a>

</span><br>_______________________________________________<br>Cascavel-pm mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br><a onclick="return top.js.OpenExtLink(window,event,this)" href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">
http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br><br></blockquote></div><br><br clear="all"><br>-- <br>Meu Blog:<br><a href="http://mundoaoleo.blogspot.com/">http://mundoaoleo.blogspot.com/</a>