- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个关于 Perl qr 运算符的问题:
#!/usr/bin/perl -w
&mysplit("a:b:c", /:/);
sub mysplit {
my($str, $pattern) = @_;
my @arr = split $pattern, $str;
print "@arr\n";
}
Use of uninitialized value $_ in pattern match (m//) at ./test.pl line 3.
Use of uninitialized value $pattern in regexp compilation at ./test.pl line 7.
&mysplit("a:b:c", qr/:/);
时,就可以了。
qr//
Và
m//
之间有什么区别?
$_
在这里相关?
split /:/, "a:b:c";
的情况下没问题?
1 Câu trả lời
好吧,你的问题是这个表达式:
/:/
$_ =~ /:/
$_
上报告未初始化错误的原因。
qr()
操作符没有这个快捷方式,这就是为什么在这种情况下它本身是一个可接受的语句。
&mysplit("a:b:c", /:/);
&mysplit("a:b:c", $_ =~ /:/);
$_
未定义,正则表达式匹配返回空列表。它可能返回空字符串,但由于您有列表上下文,它返回空列表,使错误更加明显。
mysplit()
,这就是您收到第二个警告的原因:
Use of uninitialized value $pattern in regexp compilation at ./test.pl line 7.
&
具有特定功能。除非您打算使用该功能,否则不应使用它。调用 sub 的各种方法如下,如
perldoc perlsub Như đã nêu trong:
NAME(LIST); # & is optional with parentheses.
NAME LIST; # Parentheses optional if predeclared/imported.
&NAME(LIST); # Circumvent prototypes.
&NAME; # Makes current @_ visible to called subroutine.
mysplit(...)
关于Perl qr//操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16831848/
Nếu chương trình Perl của tôi sử dụng mô-đun Perl, làm thế nào để xác định vị trí tìm tệp chứa mã của mô-đun? Ví dụ, nếu chương trình chứa: sử dụng MyModule1; # Ví dụ 1 chúng ta
Tôi có một số số trong một tệp có định dạng khác nhau: 8,3, 0,001, 9e-18. Tôi đang tìm cách dễ dàng để đọc và lưu trữ chúng mà không làm mất đi độ chính xác. Việc này rất dễ thực hiện trong AWK, nhưng làm thế nào để thực hiện trong Perl? Tôi chỉ muốn
Tôi có một số số trong một tệp có định dạng khác nhau: 8,3, 0,001, 9e-18. Tôi đang tìm cách dễ dàng để đọc và lưu trữ chúng mà không làm mất đi độ chính xác. Việc này rất dễ thực hiện trong AWK, nhưng làm thế nào để thực hiện trong Perl? Tôi chỉ muốn
Tôi đang tự học Perl và đã cài đặt Strawberry trên hệ thống Windows 8 64-bit của mình. Dòng lệnh Strawberry dường như hoạt động tốt, tôi đã tạo một thư mục trong thư mục Strawberry trên ổ C
Tôi đã tìm thấy một lỗi trong mô-đun Perl IO::Socket::SSL mà tôi có thể sửa được, tuy nhiên, tôi lo ngại về việc thử nghiệm bản sửa lỗi. Tôi đã tải xuống gói nguồn từ Debian (vì tôi dự định tạo một gói Debian hoặc bản vá cho nó) và xem xét
Tôi có một tệp perl sử dụng hai mô-đun perl là A.pm và B.pm. Nhưng trong B.pm tôi cần gọi chương trình con của A.pm. Ngay cả khi tôi sử dụng nó trong A.pm và thử sử dụng nó, tôi vẫn nhận được lỗi không xác định.
Có cách nào để tải toàn bộ mô-đun khi chạy trong Perl không? Tôi nghĩ rằng tôi đã tìm ra giải pháp tốt với autouse, nhưng đoạn mã sau không biên dịch được: package tryAutouse2; use autouse 'tryAutouse2
Tôi đã từng viết nhiều mô-đun perl và một số chương trình perl độc lập, nhưng tôi chưa bao giờ xuất bản một chương trình perl đa tệp trước đây. Tôi có một chương trình perl sắp ở giai đoạn beta và sẽ được phát hành dưới dạng mã nguồn mở. Nó đòi hỏi một số dữ liệu
Tôi có 1 tập lệnh perl trong đó chúng tôi đã viết một số chương trình con. Ví dụ: # Try_1.pl main(); sub main{ --- --- check(); } check { -- --} Bây giờ,
Có vẻ như một số (nhiều?) mô-đun trên CPAN được triển khai một phần bằng C sử dụng XS, với khả năng quay lại triển khai perl thuần túy nếu cần. Mặc dù cách này rất thông minh, nhưng rõ ràng nó sẽ làm giảm hiệu suất và tôi muốn biết liệu điều này có xảy ra không để có thể khắc phục sự cố. Có một cái nào không?
Tôi còn rất mới với Perl. Tôi hy vọng có thể cài đặt một số gói từ perl, tôi đã làm như thế này: perl -MCPAN -e 'install VM::EC2' Tôi đoán là nó không thành công do sự phụ thuộc, nó hiển thị: Kết quả:
Cho một gói Perl Foo.pm, ví dụ như gói Foo; sử dụng strict; sub bar { # một số mã ở đây } sub baz { # thêm
Tôi có một trình tạo thử nghiệm được viết bằng Perl. Nó tạo ra các bài kiểm tra được kết nối với trình mô phỏng. Các bài kiểm tra được viết bằng Perl và kết nối với trình mô phỏng thông qua API của nó. Tôi muốn mã được tạo ra có thể đọc được bằng con người, nghĩa là tôi muốn nó được thụt lề và định dạng đúng cách
Tôi đang học Perl, là người dùng rất mới. Tôi có thể biết sự khác biệt giữa các mã Perl này không? #!/usr/bin/perl & #!/usr/bin/perl -w Câu trả lời hay nhất Đó không phải là mã perl, mà là
Tôi không nghĩ đây là một câu hỏi trùng lặp. Điều này dành riêng cho các tập lệnh đi kèm với mô-đun Perl. Thông thường, khi bạn cài đặt nhiều phiên bản Perl, bạn sẽ gắn thẻ các tệp thực thi perl với số phiên bản (perl5.32) để chúng có sẵn trong /whate
Tôi có một chương trình sử dụng mã hóa Blowfish trên một tệp và một chương trình perl thứ hai nhắc nhập mật khẩu để giải mã tệp thành chuỗi, tôi không muốn phải ghi mã nguồn đã giải mã vào ổ cứng, mặc dù việc lưu trữ trong bộ nhớ không thực sự là vấn đề vì đã chạy chương trình
Có ai tìm ra giải pháp tốt cho danh sách được đánh giá lười biếng trong Perl không? Tôi đã thử nhiều cách để thay đổi những thứ như $item ( map { ... } @list ) { } của tôi thành đánh giá lười biếng - ví dụ:
Tôi đã cài đặt nhiều phiên bản Perl. Tôi đã chỉ định phiên bản nào sẽ sử dụng. Nhưng để xác minh, tôi muốn xuất phiên bản Perl từ chính tập lệnh .pl. Liệu điều này có thể thực hiện được không? Phân tích cú pháp đầu ra của "perl --version" trong một tập lệnh Perl có vẻ như
Mọi người cũng thường hỏi "Làm thế nào tôi có thể biên dịch Perl?" khi điều họ thực sự muốn là tạo ra một chương trình thực thi có thể chạy trên máy tính ngay cả khi máy không cài đặt Perl. Tôi biết một số giải pháp sau: perl2exe IndigoStar Giải pháp này mang tính thương mại. Tôi chưa bao giờ thử
đóng cửa. Câu hỏi này dựa trên ý kiến. Hiện tại không chấp nhận câu trả lời. Bạn có muốn cải thiện câu hỏi này không? Cập nhật câu hỏi để khi chỉnh sửa bài đăng này, bạn có thể trả lời bằng các sự kiện và trích dẫn. Đã đóng 8 năm trước. Cải thiện điều này
Tôi là một lập trình viên xuất sắc, rất giỏi!