Perl新手和我的限制令人沮喪。任何幫助是極大的讚賞。文本模式匹配的打印輸出
創建腳本將:
- 輸入一個文件並解析測試圖案匹配
- 輸出的特定匹配的單詞到可變
- 運行外部窗口程序(NSLOOKUP)針對變量,
- NSLOOKUP的解析輸出爲測試模式匹配
- 輸出的特定匹配的單詞到可變
- 兩個變量之間進行置換
- 然後輸出修改後的文本到一個文件
呼應「這是一臺機器:ford.com測試」到input.txt的文件
我」在做一些錯誤的打印輸出,因爲我不斷收到在test21.pl線在無效的情況下以下
沒用使用字符串的38
非權威的答案:使用0未初始化值$ _在打印的test21.pl線39
#!/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;
}
我對Perl沒有太多瞭解,但問題似乎是第二條線。如果你只是刪除替代運算符的引號會怎麼樣? –
我認爲m.buettner是正確的。在第38行,它應該是's/$ captured/$ jeff/g;'。當你把引號放在它上面時,你正在製作一個字符串。它說你在無效環境中使用它,因爲你沒有對字符串做任何事情。 – chilemagic