DSL ソース フィルタ
これが別の試みです。skiphoppy には一理ありますが、もう一度見てみると、(これまでのところ) そんなに複雑なことを求めていないことに気付きました。各コマンドを取得して、リモートサーバーにそれを実行するように指示するだけです. コマンドを理解する必要があるのはperlではなく、サーバーです。
そこで、ソース フィルターに関するいくつかの警告を削除し、簡単なフィルターを作成する方法を示すことにしました。繰り返しますが、あなたがしていることはそれほど複雑ではなく、以下の「フィルタリング」は非常に簡単です。
package RemoteAppScript;
use Filter::Simple; # The basis of many a sane source filter
use Smart::Comments; # treat yourself and install this if you don't have
# it... or just comment it out.
# Simple test sub
sub send_command {
my $cmd = shift;
print qq(Command "$cmd" sent.\n);
return;
}
# The list of commands
my @script_list;
# The interface to Filter::Simple's method of source filters.
FILTER {
# Save $_, because Filter::Simple doesn't like you reading more than once.
my $mod = $_;
# v-- Here a Smart::Comment.
### $mod
# Allow for whole-line perl style comments in the script
$mod =~ s/^\s*#.*$//m;
# 1. Break the package up into commands by split
# 2. Trim the strings, if needed
# 3. lose the entries that are just blank strings.
@script_list
= grep { length }
map { s/^\s+|\s+$//g; $_ }
split /;/, $mod
;
### @script_list
# Replace the whole script with a command to run the steps.
$_ = __PACKAGE__ . '::run_script();';
# PBP.
return;
};
# Here is the sub that performs each action.
sub run_script {
### @script_list
foreach my $command ( @script_list ) {
#send_command( $command );
socket_object->send_command( $command );
}
}
1;
RemoteAppScript.pm
これをperl が見つけられる場所に保存する必要があります。(perl -MData::Dumper -e 'print Dumper( \@INC ), "\n"'
場所を知る必要がある場合は試してください。)
次に、これを含む「perl」ファイルを作成できます。
use RemoteAppScript;
App.View2.Page2.Activate();
App.View1.Page2.Click();
でも
サーバーコマンドを保持するファイルを読み取れないという本当の理由はありません。FILTER
それは電話を捨てるでしょう。あなたが持っているだろう
App.View2.Page2.Activate();
App.View1.Page2.Click();
スクリプト ファイルに追加すると、perl ファイルは次のようになります。
#!/bin/perl -w
my $script = do {
local $/;
<ARGV>;
};
$script =~ s/^\s*#.*$//m;
foreach my $command (
grep { length() } map { s/^\s+|\s+$//g; $_ } split /;/, $script
) {
socket_object->send_command( $command );
}
そして、次のように呼び出します。
perl run_remote_script.pl remote_app_script.ras