<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div><div class="h5">
&gt; ÎÅËÉÊ ËÏÄ:<br>
&gt;<br>
&gt; sub method<br>
&gt; {<br>
&gt; š šmy $self = shift;<br>
&gt; š š...<br>
&gt; š š$self-&gt;{handle} = AnyEvent::Handle fh =&gt; $fh, on_error =&gt; sub {<br>
&gt; $self-&gt;{error} = $! };<br>
&gt; š š...<br>
&gt; }<br>
&gt;<br>
&gt; ÐÏÌÕÞÁÅÔÓÑ ÞÔÏ ËÁÌÌÂÅË ÃÅÐÌÑÅÔ ÓÓÙÌËÕ ÎÁ $self É ÉÚ ÚÁ ÎÅÇÏ ÄÅÓÔÒÕËÔÏÒ<br>
&gt; ×ÙÚ×ÁΠÎÅ ÍÏÖÅÔ ÂÙÔØ ÄÏ ÔÅÈ ÐÏÒ ÐÏËÁ handle ÎÅ ÕÎÉÞÔÏÖÉÔÓÑ.<br>
&gt; × ÓÌÕÞÁÅ Ó ÐÒÏÓÔÏ ÓÓÙÌËÁÍÉ - ÐÏÎÑÔÎÏ: weaken ÎÁ ÎÉÈ. Á ÚÄÅÓØ ËÕÄÁ ÍÏÖÎÏ<br>
&gt; weaken ÎÁÔÒÁ×ÉÔØ ÞÔÏÂÙ ÄÅÓÔÒÕËÔÏÒ Õ ÔÁËÏÇÏ ÏÂßÅËÔÁ ÒÁÂÏÔÁÌ?<br>
<br>
</div></div>ðÏÓÌÅ $self = shift; ÄÏÂÁ×ÉÔØ weaken($self);<br></blockquote></div><br>÷ ÜÔÏÍ ÓÌÕÞÁÅ ÅÓÌÉ ÜÔÁ ÒÁÂÏÔÁ ÄÅÌÁÅÔÓÑ ×ÎÕÔÒÉ ËÏÎÓÔÒÕËÔÏÒÁ, ÔÏ ÄÏÂÁ×ÌÅÎÉÅ ÔÁËÏÇÏ weaken ÐÒÉ×ÏÄÉÔ Ë ÔÏÍÕ ÞÔÏ ×ÍÅÓÔÏ ÕËÁÚÁÔÅÌÑ ÎÁ ÏÂßÅËÔ ×ÏÚ×ÒÁÝÁÅÔÓÑ ËÁËÁÑ-ÔÏ ÁÈÉÎÅÑ.<br>
<br>×ÏÔ ÔÁËÏÊ ÔÅÓÔ:<br><br>#!/usr/bin/perl<br><br>use warnings;<br>use strict;<br><br>use utf8;<br>use open qw(:std :utf8);<br><br>package TestW;<br>use AnyEvent::Handle;<br>use Scalar::Util qw(weaken);<br><br><br>sub new {<br>
ššš my ($class, $fh) = @_;<br><br>ššš my $self = bless {š } =&gt; $class;<br>#šššš weaken $self;<br>ššš $self-&gt;{handle} = new AnyEvent::Handle<br>ššššššš fh =&gt; $fh,<br>ššššššš on_error =&gt; sub { $self-&gt;{error} = $! };<br>
ššš return $self;<br>}<br><br>package main;<br>use Data::Dumper;<br><br>my $o = new TestW(\*STDIN);<br>print Dumper $o;<br><br>ÐÅÞÁÔÁÅÔ ÎÁ ×ÙÈÏÄÅ ÓÌÅÄÕÀÝÅÅ:<br><br>$VAR1 = bless( {<br>šššššššššššššššš &#39;handle&#39; =&gt; bless( {<br>
ššššššššššššššššššššššššššššššššššš &#39;_activity&#39; =&gt; &#39;1298875336.78856&#39;,<br>ššššššššššššššššššššššššššššššššššš &#39;_ractivity&#39; =&gt; &#39;1298875336.78856&#39;,<br>ššššššššššššššššššššššššššššššššššš &#39;_wactivity&#39; =&gt; &#39;1298875336.78856&#39;,<br>
ššššššššššššššššššššššššššššššššššš &#39;fh&#39; =&gt; \*::STDIN,<br>ššššššššššššššššššššššššššššššššššš &#39;oobinline&#39; =&gt; 1,<br>ššššššššššššššššššššššššššššššššššš &#39;on_error&#39; =&gt; sub { &quot;DUMMY&quot; }<br>
ššššššššššššššššššššššššššššššššš }, &#39;AnyEvent::Handle&#39; )<br>šššššššššššššš }, &#39;TestW&#39; );<br><br>ÔÅÐÅÒØ ÅÓÌÉ ÒÁÓËÏÍÅÎÔÉÒÏ×ÁÔØ weaken, ÔÏ ÏÂßÅËÔ ÐÒÅ×ÒÁÔÉÔÓÑ × ÐÒÏÓÔÏÊ ÈÅÛ:<br><br>$VAR1 = {<br>ššššššššš &#39;handle&#39; =&gt; bless( {<br>
šššššššššššššššššššššššššššš &#39;_activity&#39; =&gt; &#39;1298875430.28919&#39;,<br>šššššššššššššššššššššššššššš &#39;_ractivity&#39; =&gt; &#39;1298875430.28919&#39;,<br>šššššššššššššššššššššššššššš &#39;_wactivity&#39; =&gt; &#39;1298875430.28919&#39;,<br>
šššššššššššššššššššššššššššš &#39;fh&#39; =&gt; \*::STDIN,<br>šššššššššššššššššššššššššššš &#39;oobinline&#39; =&gt; 1,<br>šššššššššššššššššššššššššššš &#39;on_error&#39; =&gt; sub { &quot;DUMMY&quot; }<br>šššššššššššššššššššššššššš }, &#39;AnyEvent::Handle&#39; )<br>
ššššššš };<br><br>É ËÁË ÂÙÔØ?<br>Perl 5.10.1<br>