вызов сценария perl с аргументами из визуального slickedit и, в свою очередь, передача выходных данных в качестве параметров визуальному редактированию для дальнейшей обработки - PullRequest
0 голосов
/ 07 июня 2011

Я пытаюсь вызвать скрипт perl из slickedit .. через файл .e, который я буду использовать для создания макроса. Скрипт perl в основном представляет собой анализатор xml, который анализирует файл .xml, структура которого определяется в соответствии сфайл .dtd.

здесь идет файл .e, который я использую для вызова сценария perl

_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-скрипт должен открывать TXT-файл обратно в slickedit..но я не получаю никакого вывода. Так что, пожалуйста, помогите мне в этом.предложить способ сделать это.Спасибо, и я надеюсь, что мой вопрос теперь ясен

1 Ответ

0 голосов
/ 08 июня 2011

Как указал даксим, ваш вопрос не совсем ясен, поэтому мой ответ будет несколько общим

Я не уверен, что это самый чистый способ (поскольку он использует фиксированный временный файл), но янаписал (в прошлом задании) код slickedit, который вызывал сценарии ... сделал вывод внешних сценариев в известный временный файл, а затем проанализировал временный файл с помощью кода редактирования slick после

don 'Я точно не помню, почему, но под окнами я также обернул выполнение скрипта в пакетный файл (который реализовал перенаправление на именованный файл, возможно, у меня были проблемы с цитированием)

это, как правило, выглядит так ...

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;
...