了解しました。質問の見出しは少し混乱するかもしれません。私は実際の問題を以下のコードで再現しました:
プレフィックスとして2つの異なるIPアドレスを持つファイルを作成していますが、特定のIPアドレスプレフィックスを持つファイルのみを一覧表示したいと思います。
プレフィックスとして「10.10.10.10」と「11.11.11.11」を使用してファイルを作成していますが、「10.10.10.10」プレフィックスを使用したファイルのみを一覧表示したいと思います。
これが私のコードです:
#!/usr/bin/perl -w
use strict;
my $ipaddr1 = '10.10.10.10';
for ( my $counter = 1; $counter < 10; $counter++)
{
my $filename = $ipaddr1."_".$counter.".txt";
open (my $fh, ">", $filename) or die "$! \n";
}
my $ipaddr2 = '11.11.11.11';
for ( my $counter = 1; $counter < 10; $counter++)
{
my $filename = $ipaddr2."_".$counter.".txt";
open (my $fh, ">", $filename) or die "$! \n";
}
print "Done with creating hte files. \n";
print "Lets print the files with only 10.10.10.10 prefix \n";
for my $var ( `ls -1 $ipaddr1_*` ) ### <<< this is the probelm
{
print $var;
}
出力:
Global symbol "$ipaddr1_" requires explicit package name at test.pl line 21.
Execution of test.pl aborted due to compilation errors.
したがって、bashコマンドの実行中にperl変数を解釈できないというエラーを完全に理解しています。
質問:
これを達成する方法は?コマンドに明示的なIPアドレスを渡したくないのですls -1
が、代わりに、それぞれのIPアドレスを保持する変数を渡したいと思います。
ありがとう。