Следующий пример Perl является частью длинного скрипта Perl.Perl регулярное выражение и аргументы
Этот сценарий принимает результаты от ifconfig -a
и печатает IP-адрес.
Может кто-нибудь объяснить, как $1
получает IP-адрес?
А что регулярное выражение
$RESULTS =~ /addr:(\S+)\s+/
средства?
my $COMMAND = "ifconfig -a | grep inet | grep -v 127.0.0.1 | head -1";
my $RESULTS = `$COMMAND`;
chomp $RESULTS;
# inet addr:106.13.4.9 Bcast:106.13.4.255 Mask:255.255.255.0
# inet 106.13.4.9 netmask ffffff80 broadcast 106.13.4.127
if ($RESULTS =~ /addr:(\S+)\s+/) {
$IpAddress = $1;
}
elsif ($RESULTS =~ /inet\s+(\S+)\s+/) {
$IpAddress = $1;
}
print "IpAddress = $IpAddress\n";
очень интересно, но как $ 1 взять только IP-адрес, а не все addr: 106.13.4.9 string? – maihabunash
Потому что '$ 1' хранит только то, что находится в круглых скобках, но не вне круглых скобок. Посмотрите на данную ссылку, вы поймете поведение '$ 1'. – serenesat