Я написал этот код в perl:
shift( @interfaces = qx'ifconfig -s' );
И получил эту ошибку:
Type of arg 1 to shift must be array (not list assignment)
Когда я пишу это так:
@interfaces = qx'ifconfig -s';
shift @interfaces;
Он делает то, что я хочу, чтобы получить вывод команды ifconfig в виде массива строк и удалить первый элемент в массиве (который является заголовком, а не фактическим интерфейсом).
Мое личное предпочтение - написать это как один лайнер. Мне кажется, что скобки в первом примере должны привести к тому, что назначение будет полностью разрешено, поэтому разрешите сдвиг, чтобы видеть @interfaces как массив, но, очевидно, perl считает это "назначение списка".
Это, несомненно, простой вопрос для perl гуру, но я googled и googled и не нашел просветления.
Если кто-то попросит предоставить конкретную семантику, чтобы выполнить то, что я хочу в одной строке, я был бы признателен. Если вы также захотите объяснить, почему моя первая версия не работает, я буду вечно благодарен (научите человека ловить рыбу и все такое).
Заранее благодарим вас за помощь.