小编der*_*ert的帖子

如何在Catalyst的请求端清理?

我试图在每个请求使用Catalyst完成后调用一些代码.基本上,我想运行一些代码作为一部分finalize.据说Catalyst :: Plugin :: Observe会这样做,但它看起来完全坏了(只是加载插件中断Catalyst).

我正在尝试修复Observe插件,但这证明是固执的.

那么,是否有更好的方法可以在每个请求结束时调用一些清理代码?

(注意:这是在模型中,而不是控制器,所以我不能只使用sub end { ... })

perl catalyst

2
推荐指数
1
解决办法
807
查看次数

如何在 Perl 的套接字上设置`SO_RCVTIMEO`?

如果我这样尝试:

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::Socketperlfunc豆荚不说,虽然perlfunc给出了一个例子TCP_NODELAY,这使它看起来像上面应该工作。

快速说明:我已经尽我所能回答了我自己的问题,但当然欢迎更好的答案。最明显的“更好”是它具有便携性,至少在 POSIX 机器上)

sockets perl setsockopt io-socket

2
推荐指数
1
解决办法
3915
查看次数

为什么ssh在我把它交给Perl的Net :: SSH :: Perl之后会提示我输入密码?

我使用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 …

ssh perl

1
推荐指数
1
解决办法
3212
查看次数

屏幕抓取网页,使用Mechanize显示数据页面

我正在尝试屏幕抓取一个网页(使用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时,我们怎么能有这样的点击动作?

ruby paging screen-scraping mechanize

0
推荐指数
1
解决办法
2363
查看次数

<td>标记中的样式属性在Firefox中不起作用

我有一个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等中运行?

html

-4
推荐指数
1
解决办法
974
查看次数