Perl は初めてで、私の制限は苛立たしいものです。どんな助けでも大歓迎です。
スクリプトの作成:
- ファイルを入力し、テスト パターンの一致を解析します
- 特定の一致した単語を変数に出力する
- 変数に対して外部 Windows プログラム (nslookup) を実行し、
- テスト パターンの一致について nslookup の出力を解析する
- 特定の一致した単語を変数に出力する
- 2 つの変数の間で置換を実行する
- そして、変更されたテキストをファイルに出力します
「This is a Machine: ford.com test」をinput.txtファイルにエコーする
次のメッセージを受け取り続けるため、印刷に問題があります
test21.pl 行 38 の void コンテキストでの文字列の無用な使用。
非公式の回答: 初期化されていない値 $_ の使用が test21.pl 行 39 の出力で使用されています。
0
#!/bin/perl
use strict;
use warnings;
use Net::Nslookup;
use File::Copy;
sub host {
my $result;
my $node = shift;
print system("nslookup $node.com | findstr ^Name: >> POOH");
open( my $stuff, "<", "POOH" ) || die "Can't open input.txt: $!";
while (<$stuff>) {
if (/(Name:)(\s+)(\w+)/) {
$result = $3;
}
}
return $result;
}
my $captured;
my $captured2;
my $jeff;
my $in = 'input.txt';
my $out = 'output.txt';
my $test = 'test.txt';
copy( $in, $out ) || die "File cannot be copied.";
open OUTPUT, "< $out" || die "Can't open input.txt: $!";
open TEST, "> $test" || die "Can't open input.txt: $!";
while (<OUTPUT>) { # assigns each line in turn to $_
if (/(Machine:)(\s)(\w+)/) {
$captured = $3;
$jeff = host($captured);
}
"s/$captured/$jeff/g";
print TEST;
}