tôi đã viết mã này trong perl:Chuyển đổi kết quả ngữ cảnh danh sách thành mảng trong một dòng trong perl?
shift(@interfaces = qx'ifconfig -s');
Và nhận lỗi này:
Type of arg 1 to shift must be array (not list assignment)
Khi tôi viết nó theo cách này:
@interfaces = qx'ifconfig -s';
shift @interfaces;
Nó làm những gì tôi muốn, đó là để có được đầu ra của lệnh ifconfig như một mảng các dòng và loại bỏ phần tử đầu tiên trong mảng (đó là một tiêu đề, không phải là một giao diện thực tế).
Sở thích cá nhân của tôi là viết thư này làm lớp lót. Dường như với tôi các dấu ngoặc đơn trong ví dụ đầu tiên sẽ khiến cho bài tập được giải quyết đầy đủ, do đó cho phép chuyển sang xem @interfaces như một mảng, nhưng rõ ràng perl nghĩ đó là một "danh sách gán".
Đây chắc chắn là một câu hỏi dễ dàng cho các bậc thầy perl nhưng tôi đã googled và googled và đã không tìm thấy giác ngộ.
Nếu ai đó vui lòng cung cấp ngữ nghĩa cụ thể để hoàn thành những gì tôi muốn trong một dòng, tôi sẽ đánh giá cao nó. Nếu bạn cũng xin vui lòng dành thời gian để giải thích lý do tại sao phiên bản đầu tiên của tôi không hoạt động tôi sẽ mãi mãi biết ơn (dạy một người đàn ông để cá và tất cả điều đó).
Cảm ơn bạn trước sự giúp đỡ của bạn.
đây là một giải pháp tuyệt vời nhưng từ quan điểm bảo trì, tôi muốn sử dụng dịch chuyển để nhấn mạnh đến một nhà phát triển trong tương lai mà tôi đang ném đi phần tử đầu tiên của một mảng. Tôi chắc chắn cho câu trả lời của bạn một upvote nhưng nó không hoàn toàn những gì tôi muốn bởi vì tôi tin rằng không sử dụng thay đổi làm giảm mã rõ ràng (YMMV tất nhiên). Câu trả lời tuyệt vời mặc dù. – par
Tôi đã quyết định cuối cùng rằng điều này sẽ được rõ ràng đủ một khi thành ngữ chuyển nhượng undef được hiểu (là tôi và những người cuối cùng phải duy trì những gì tôi đang làm việc trên). Luôn luôn có một sự cân bằng mà phải được ấn tượng giữa mã rõ ràng và dễ sử dụng xuống dòng. Câu trả lời của Mob là tuyệt vời nhưng tôi nghĩ rằng kết thúc với một mảng không phải là một tham chiếu mảng cuối cùng sẽ làm cho mã dễ dàng hơn để làm theo. – par
Ok, bạn nhận được một upvote cho rằng craziness về phía cuối, ** và ** để phân loại chúng theo chiều dài. =) – TLP