小编Ric*_*sin的帖子

proc_open:扩展文件描述符编号以启用Perl脚本的"状态"反馈

PHP的proc_open手册说明:

文件描述符编号不限于0,1和2 - 您可以指定任何有效的文件描述符编号,并将其传递给子进程.这允许您的脚本与作为"协同进程"运行的其他脚本进行互操作.特别是,这对于以更安全的方式将密码短语传递给PGP,GPG和openssl等程序非常有用.它对于读取这些程序在辅助文件描述符上提供的状态信息也很有用.

发生了什么: 我在基于PHP的Web应用程序中调用Perl脚本并在调用中传递参数.我将来不需要将数据发送到脚本.通过stdout [1]我收到了我在PHP应用程序中使用的Perl脚本json_encoded数据.

我想补充的内容: Perl脚本正在通过网站收集信息,具体取决于其初始调用中传递的参数.我想将一个文本字符串发送回PHP应用程序,我可以将其用作一种进度条显示.

我认为我应该这样做:我希望(每1-2秒)轮询一次为"进展"更新设置的频道.我会使用Javascript/jQuery写入一个html div容器供用户查看.我不认为我应该将"进度"通道与更关键的"json_encode(数据)"通道混合,因为我需要解密stdout流.(这个想法合乎逻辑,实用吗?)

我的主要问题: 你如何使用额外的"文件描述符?" 我想将其他通道的设置想象得很简单,比如下面的3 => ...:

$tunnels = array(   
   0 => array('pipe', 'r'),     
   1 => array('pipe', 'w'),    
   2 => array('pipe', 'w'),    
   3 => array('pipe', 'w')        
);

$io = array();
$resource = proc_open("perl file/tomy/perl/code.pl $param1 $param2 $param3", $tunnels, $io);

if(!is_resource($resource)) {
    $error = "No Resource";
}

fclose($io[0]);

$perlOutput = stream_get_contents($io[1]);
$output = json_decode($perlOutput);

$errors = stream_get_contents($io[2]);
print "$errors<p>";

fclose($io[1]);
fclose($io[2]);

$result = …
Run Code Online (Sandbox Code Playgroud)

php perl proc-open

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

带有条件的Perl XPath语句 - 可能吗?

这个问题已被重新定义.我正在使用CPAN Perl模块WWW :: Mechanize来浏览网站,使用HTML :: TreeBuilder-XPath来捕获内容,使用xacobeo来测试HTML/XML上的XPath代码.目标是从基于PHP的网站调用此Perl脚本,并将已删除的内容上载到数据库中.因此,如果内容"缺失",仍然需要考虑.

下面是一个经过测试的简化示例代码,描述了我的挑战.注意:

  1. 该页面是动态填充的,包含ITEMS不同商店的各种输出; Products*每个商店都有不同数量的商品.这些产品清单可能有也可能没有下面的逐项表.
  2. 捕获的数据必须在数组中,并且必须维护任何逐项列表(如果存在)与产品列表的关联.

下面,示例xml每个商店更改(如上所述),但为了简洁起见,我只显示一个"类型"的输出.我意识到所有数据都可以捕获到一个数组中,然后使用正则表达式来解密内容,以便将其上传到数据库中.我正在寻求更好的XPath知识,以帮助简化此(和未来)解决方案.

<!DOCTYPE XHTML>
<table id="8jd9c_ITEMS">
<tr><th style="color:red">The Products we have in stock!</th></tr>

<tr><td><span id="Product_NUTS">We have nuts!</span></td></tr>
<tr><td>
    <!--Table may or may not exist  -->
           <table>                                  
      <tr><td style="color:blue;text-indent:10px">Almonds</td></tr>
      <tr><td style="color:blue;text-indent:10px">Cashews</td></tr>
      <tr></tr>
    </table>
</td></tr>

<tr><td><span id="Product_VEGGIES">We have veggies!</span></td></tr>
<tr><td>
    <!--Table may or may not exist -->
    <table>
      <tr><td style="color:blue;text-indent:10px">Carrots</td></tr>
      <tr><td style="color:blue;text-indent:10px">Celery</td></tr>
      <tr></tr>
    </table>
</td></tr>

<tr><td><span id="Product_ALCOHOL">We have booze!</span></td></tr>
    <!--In this case, the table …
Run Code Online (Sandbox Code Playgroud)

perl xpath

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

什么是<%= ...%>

例如:

<input id="wineId" name="id" type="text" value="<%= id %>" />
Run Code Online (Sandbox Code Playgroud)

我知道它正在打印JSON字符串id属性的值(即{id:100}).但是我没有找到任何关于它的文档,甚至我的Google-Fu都找不到它. 这个SO帖子假设它是一个Microsoft Response.write()方法,但我发现它在与Microsoft代码无关的上下文中.

我正在阅读关于backbone.js的一般信息,Christophe Coenraets专门针对此特定页面(第4行)的这个由四部分组成的骨干教程.

我在html和javascript文档下搜索了"developer.mozilla.org"网站.我瞎了吗?任何帮助非常感谢!

html javascript html5 backbone.js

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

Vim 多行搜索模式

我有一个替换命令,可以捕获并显示替换字符串中的 submatch() 值。但我想在这一行下面解析另一行信息。该行始终是空行之后的第一行,尽管该空行的行数有所不同。例如:

The first important line I want to capture is here
Stuff I don't want.
A few more lines of stuff I don't want...

Second line I want to capture.
Run Code Online (Sandbox Code Playgroud)

这种模式在文档中重复一百次左右。我可以很好地替换“第一条重要行”,但是该搜索模式不应该包含一种跳到第一个空行,然后选择下一个“我想要捕获的第二行”的方法。?? 然后,我可以将第二行的内容放入子匹配括号中,并在需要的地方替换它们(对吗?)。

如果是这样,我无法找到扩展第一个搜索模式以捕获“第二行”的方法建议或纠正我的方法将不胜感激。

vim substitution

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

在Vim中这种替代的最佳方法是什么?

一个多行文档有一个标题/标题部分,然后每个下面有大约10个列表.我需要将标题/标题信息放入每个列表中,以便它们可以正确上传到网站(使用逗号和管道分隔符).它看起来像这样:

SectionName1 and TitleName1
     1111 - The SubSectionName A

     222 - The SubSectionName B

     3333 - The SubSectionName C

SectionName2 and TitleName2
     444 - The SubSectionName D

     55555 - The SubSectionName E

     66 - The SubSectionName F
Run Code Online (Sandbox Code Playgroud)

重复几百次.我需要的是产生类似的东西:

SectionName1,TitleName1,1111,SubSectionNameA
SectionName1,TitleName1,222,SubSectionNameB
SectionName1,TitleName1,3333,SubSectionNameC
SectionName2,TitleName2,444,SubSectionNameD
SectionName2,TitleName2,55555,SubSectionNameE
SectionName2,TitleName2,66,SubSectionNameF
Run Code Online (Sandbox Code Playgroud)

我意识到这个解决方案有多种方法,但是我很难在任何一种方法上触发触发器.我理解子匹配,连接和getline但我不擅长在这种情况下实际使用它们.

任何让我精神上开始的帮助将不胜感激.

regex vim substitution

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

标签 统计

perl ×2

substitution ×2

vim ×2

backbone.js ×1

html ×1

html5 ×1

javascript ×1

php ×1

proc-open ×1

regex ×1

xpath ×1