我试图在每个请求使用Catalyst完成后调用一些代码.基本上,我想运行一些代码作为一部分finalize.据说Catalyst :: Plugin :: Observe会这样做,但它看起来完全坏了(只是加载插件中断Catalyst).
我正在尝试修复Observe插件,但这证明是固执的.
那么,是否有更好的方法可以在每个请求结束时调用一些清理代码?
(注意:这是在模型中,而不是控制器,所以我不能只使用sub end { ... })
如果我这样尝试:
my $sock = IO::Socket::INET->new( … ) or die "no socket for you";
defined $sock->setsockopt(SOL_SOCKET, SO_RCVTIMEO, 30) or die "setsockopt: $!";
Run Code Online (Sandbox Code Playgroud)
然后我的脚本因“setsockopt:[第 2 行] 处的无效参数”而死亡。在IO::Socket和perlfunc豆荚不说,虽然perlfunc给出了一个例子TCP_NODELAY,这使它看起来像上面应该工作。
(快速说明:我已经尽我所能回答了我自己的问题,但当然欢迎更好的答案。最明显的“更好”是它具有便携性,至少在 POSIX 机器上)
我使用Net :: SSH :: Perl在远程服务器上执行命令,如下所示:
use Net::SSH::Perl;
my $ssh = Net::SSH::Perl->new($host);
$ssh->login($user, $pass);
my ($stdout, $stderr, $exit) = $ssh->cmd($cmd);
Run Code Online (Sandbox Code Playgroud)
但是当我执行上面的脚本时,会再次出现密码提示.这意味着我在$ pass中提供的密码不用于建立ssh连接.为什么是这样?知道如何克服这个问题吗?我在下面给出调试信息:
serv1: Reading configuration data /root/.ssh/config serv1: Reading configuration data /etc/ssh_config serv1: Allocated local port 1023. serv1: Connecting to 15.154.59.63, port 22. serv1: Remote protocol version 1.99, remote software version OpenSSH_4.2 serv1: Net::SSH::Perl Version 1.34, protocol version 1.5. serv1: No compat match: OpenSSH_4.2. serv1: Connection established. serv1: Waiting for server public key. serv1: Received server public key (768 bits) and …
我正在尝试屏幕抓取一个网页(使用Mechanize),它在网格页面中显示记录.我能够读取第一页中显示的值,但现在需要导航到下一页以读取适当的值.
<tr>
<td><span>1</span></td>
<td><a href="javascript:__doPostBack('gvw_offices','Page$2')">2</a></td>
<td><a href="javascript:__doPostBack('gvw_offices','Page$3')" >3</a></td>
<td><a href="javascript:__doPostBack('gvw_offices','Page$4')" >4</a></td>
<td><a href="javascript:__doPostBack('gvw_offices','Page$5')" >5</a></td>
<td><a href="javascript:__doPostBack('gvw_offices','Page$6')">6</a></td>
<td><a href="javascript:__doPostBack('gvw_offices','Page$7')" >7</a></td>
<td><a href="javascript:__doPostBack('gvw_offices','Page$8')">8</a></td>
<td><a href="javascript:__doPostBack('gvw_offices','Page$9')" >9</a></td>
<td><a href="javascript:__doPostBack('gvw_offices','Page$10')" >10</a></td>
<td><a href="javascript:__doPostBack('gvw_offices','Page$11')">...</a></td>
</tr>
Run Code Online (Sandbox Code Playgroud)
我能够通过所有链接,但当我尝试这个: -
links = (row/"a")
links.each do |link|
agent.click link.attributes['href'] # This fails
agent.click link # This also fails
end
Run Code Online (Sandbox Code Playgroud)
原因是agent.click期望URL作为参数.
有没有一种方法可以在页面显示时读取所有值?如果不是,当href是回发而不是URL时,我们怎么能有这样的点击动作?
我有一个HTML表,我正在尝试使用style属性添加渐变<td>.这适用于IE,但不适用于Firefox,Opera或Chrome.
<td height="100%" width="10%" valign="top"
style="filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr='#6487DB'??, endColorStr='#003366', gradientType='0');" >
</td>
Run Code Online (Sandbox Code Playgroud)
如何让它在Firefox等中运行?