2つの変数を1行に出力すると、2番目の変数が最初の変数を上書きします。ここで説明するように、文字列の1つに「隠れた」文字が含まれている可能性があります。concatenateing string variables overwrites themPerlの2つの変数が最初の変数を上書きする
"正しく"印刷するにはどうすればよいですか? Perlに変数に割り当てられた文字列のすべての文字を正確に教えてもらうにはどうすればいいですか?それが「隠された」キャラクターでないなら、何が問題なのですか?ファイルからの入力データの一部が扱う
#!/usr/bin/perl
use strict;
use warnings;
print "\n\nstart\n\n";
open CFG, "sw.cfg"
or die "Unable to open file sw.cfg: $!";
my $a;
my $b;
my $c;
while (<CFG>) {
if (/interface/) {
$a = substr ($_, 10);
}
if (/description/) {
$b = substr ($_, 12);
chomp ($a);
chomp ($b);
# $c = join ("--", $a, $b);
print "$a,\n";
# print "$c\n"
}
}
コードがある...私のスクリプトは、実際に出力何
interface FastEthernet0/1
spanning-tree portfast
!
interface FastEthernet0/2
spanning-tree portfast
!
interface FastEthernet0/3
description AP STM
spanning-tree portfast
!
interface FastEthernet0/4
description PORTAGE
spanning-tree portfast
enter code here
...
start
,astEthernet0/3
,astEthernet0/4
,astEthernet0/5
,astEthernet0/7
,astEthernet0/9
,astEthernet0/11
私は思います"FastEthernet 0/3"を印刷した後にコンマを入れてください。
この問題を修正...
while (<CFG>) {
**s/\r\n\z//;**
if (/interface/) {
サンプル入力データの一部と表示する出力を入力してください。データを見ることなく、 'interface'と' description'が同じ行にあるのかどうかわかりません。あなたが間違った場所から印刷しているかもしれないという事実であるように、それは一つの可能性のある問題です。 – stevieb
interface FastEthernet0/1 スパニングツリーポートファスト ! interface FastEthernet0/2 スパニングツリーポートファスト ! interface FastEthernet0/3 説明AP STM スパニングツリーポートファスト ! interface FastEthernet0/4 description PORTAGE spanning-tree portfast – dspicer
また、現在のコードでは2つの変数を出力しないので、 "$ a、\ n"だけを出力します。 –