-6

(IP アドレスまたは Web リンク) を perl スクリプトで開き、属性ユーザー名の値をこの IP アドレスまたは Web リンクに渡したいと考えています。次の perl スクリプトに必要な構成行を説明とともに追加してください。

注: 次のスクリプトでは、exe ファイルが実行されるように作成されていますが、今は必要ありません。代わりに、構成を置き換えて、ipaddress/weblink を開き、属性 "username" の値をこのリンクまたは IP に渡します。

#!/usr/bin/perl
use warnings;
use strict;
my $p;

print "Hello Radiator is executing the exe file via TKs perl scripting \n";

my $user_name = $p->getUserName;
open my $EX1_PIPE, '|-', "exelocation\file.exe $user_name" 
            or die "location\file.exe $!\n";

print $EX1_PIPE "$_\n" for ($user_name);

close $EX1_PIPE or die $!;

ありがとう、トーマス

4

1 に答える 1

2

あなたが与えたスクリプトは機能しません。

  1. $pundef です。その変数でメソッドを呼び出すとすぐにエラーが発生します。
  2. 文字列"\f"には、文字シーケンスのバックスラッシュ-f ではなく、フォームフィードが含まれます。バックスラッシュはエスケープ シーケンスを導入するか、そのようなエスケープ シーケンスがない場合は無視されます。Windows でもパスを区切るにはスラッシュを使用してください。
  3. $usernameコマンド文字列に直接補間します。より多くの引数を使用する方が良いでしょうopen; これは、$usernameスペースが含まれていても機能する可能性が高くなります。

    open my $EX1_PIPE, "|-", "exelocation/file.exe", $username or die ...;
    
  4. 1 つの値に対してループを使用しているため、ステートメントは意味がありませfor ($username)ん。print {$EX1_PIPE} "$username\n"直接行う。

HTTP 接続を開くには、LWPライブラリを使用することをお勧めします。複雑な操作にはLWP::UserAgentモジュールを使用でき、ドキュメントを簡単に作成するにはLWP::SimpleGETを使用できます。ユーザー名をクエリ文字列のパラメータとして渡したいと思うでしょう。特殊文字をエスケープするには、 URI::Escapeまたは同様のモジュールを調べてください。

コードが最終的にどのように表示されるかは、HTTP サービスのインターフェースによって異なります。

一般に、ワークフローは次のようになります。

  1. ユーザー エージェント インスタンスを作成する
  2. ユーザー名をエスケープし、URL を作成します
  3. そのアドレスを取得します
  4. 有効な応答を確認し、デコードされた結果を返します。

例については、モジュールのドキュメントを参照してください。

于 2013-03-07T12:43:33.700 に答える