0
我的perl腳本出現了一個很奇怪的問題。我真的不知道,發生了什麼,也許你會看到它......Perl打印更改執行順序
我的腳本使用Net::SSH::Perl
通過SSH連接到主機。之後,我在config.ini上搜索head -20
並搜索一些模式(版本號)。
當我打印版本號i cat
其他約700行長的文件。
現在發生的情況是,該腳本不是打印版本號,而是打印整個700行文件。 除非在版本打印之後直接添加print "\n"x10;
。
這種行爲沒有任何意義,我,但我敢肯定,你們中的一個會比我更聰明,知道答案:)
下面的腳本:
1 #!/usr/local/bin/perl -w
2 use lib './';
3 use strict;
4
5 use GetVersions;
6 use Net::SSH::Perl;
7
8
9 my $ssh = Net::SSH::Perl->new(
10 'host',
11 identity_files => ['~/.ssh/id_rsa']
12);
13
14 $ssh->login('user');
15
16 my $ver_regex = '^psadm\.version\s*=\s*rel_(.+)$';
17
18 my ($file, $err, $exit) = $ssh->cmd('head -20 /config.ini');
19 my $version = $file =~ /$ver_regex/m;
20 print "version: $version\n",
21 #print "\n"x10;
22 ($file, $err, $exit) = $ssh->cmd('cat /application.ini');
+1不錯。有趣的是額外的'print'語句實際上只是增加了一個分號來解決問題,並且可以是任何語句。它還應該在版本號的末尾添加一個'1',因爲它會打印'print'的返回值。 – TLP
這會在版本號之前添加打印文件內容的奇怪現象(參見'print 2,print 3')。 – AKHolland
哦,非常感謝你:-D我和其他同事一起盯着這段代碼幾個小時,我們只是沒有看到。你先生,真棒! – Vince