(3 строки) от bash до perl? - PullRequest
       9

(3 строки) от bash до perl?

0 голосов
/ 20 октября 2010

У меня есть три строки в bash, которые работают очень хорошо.Я хочу добавить их в какой-нибудь существующий скрипт perl, но я никогда не использовал perl раньше ...

Может кто-нибудь переписать их для меня?Я пытался использовать их как есть, и они не работали

обратите внимание, что $SSH_CLIENT - это параметр времени выполнения, который вы получаете, если набрать set в bash (linux)

users[210]=radek       #where 210 is tha last octet from my mac's IP
octet=($SSH_CLIENT)    # split the value on spaces 
somevariable=$users[${octet[0]##*.}]        # extract the last octet from the ip address

Ответы [ 2 ]

4 голосов
/ 20 октября 2010

Это может сработать для вас. Я отметил свои предположения по каждой строке.

my %users = ( 210 => 'radek' ); 

Я предполагаю, что вы хотели разреженный массив. Хэши - стандартная реализация разреженных массивов в Perl.

my @octet = split ' ', $ENV{SSH_CLIENT}; # split the value on spaces

Я предполагаю, что вы все еще хотите использовать окружение переменную SSH_CLIENT

my ( $some_var ) = $octet[0] =~ /\.(\d+)$/; 

Вы хотите последний набор цифр от '.' до конца.

  • Парень вокруг переменной помещает назначение в контекст списка.
  • В контексте списка совпадение создает список всех «захваченных» последовательностей.
  • Назначение скаляра в контексте списка означает, что из списка назначается только количество скаляров в выражении.

Что касается вашего вопроса в комментариях, вы можете получить переменную из хеша:

$db = $users{ $some_var };

# OR--this one's kind of clunky...

$db = $users{ [ $octet[0] =~ /\.(\d+)$/ ]->[0] };
3 голосов
/ 20 октября 2010

Скажем, вы уже получили свой IP в строке,

$macip = "10.10.10.123";
@s = split /\./ , $macip;
print $s[-1];  #get last octet

Если вы не знаете Perl и вам необходимо использовать его для работы, вам придется изучить его. Конечно, вы не собираетесь приходить в SO и спрашивать каждый раз, когда вам это нужно в Perl, верно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...