使用visual slickedit中的参数调用perl脚本,然后将输出作为参数传递给可视化光滑编辑以进行进一步处理

时间:2011-06-07 18:31:19

标签: perl slickedit

我试图通过一个.e文件从slickedit调用一个perl脚本,我将用它来创建一个宏.perl脚本基本上是一个xml解析器,它解析一个.xml文件,其结构是根据一个定义的。 .dtd文件。

这里是我用于调用perl脚本的.e文件

_command void invoke(){

shell("C:\\Users\\anits\\Desktop\\trial.pl");
}

要调用的perl脚本看起来像这样

use XML::Simple;
use Data::Dumper;
open logfile,">test.txt";
#sub process{
$xml = new XML::Simple (KeyAttr=>[]);# read XML file
my $error =$xml->XMLin("trial.xml");
print "There are " . scalar(@{$error->{problem}}) . " problems.\n";
foreach my $var (@{$error->{problem}}) {
print logfile $var->{name}."\n";
}
close logfile;
@args = ("C:/Program Files (x86)/SlickEdit 2009/win/vs.exe","C:/Users/anits/Desktop/test.txt");
system(@args) == 0  or die "system @args failed: $?";

你可以看到我的perl脚本应该在slickedit中打开一个txt文件..但是我没有得到任何输出。所以请帮助我。

如果可以使用slickc完成xml解析,请提示一种方法。 谢谢,我希望我的问题现在很清楚

1 个答案:

答案 0 :(得分:0)

正如daxim所指出的那样,你的问题并不完全清楚,所以我的答案会有点笼统。

我不确定它是否是最干净的方式(因为它使用固定的临时文件),但我已经编写了(在过去的工作中)调用脚本的slickedit代码...将外部脚本输出到一个众所周知的临时文件,然后在

之后通过光滑的编辑代码解析临时文件

不记得究竟为什么但是在Windows下我还在批处理文件中包装了脚本的执行(实现了重定向到命名文件,也许我引用了问题)

这通常是它的样子......

static str mytmp='somepath'
 <construct command_string, which will direct output to the well known file location 'somepath'>
shell(command_string, 'qp');

get(mytmp);
top();
get_line(line);
do work with line;