0

我正在尝试通过 .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 解析,请提出一种方法。谢谢,我希望我的问题现在很清楚

4

1 回答 1

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;
于 2011-06-08T15:12:33.837 回答