Tôi muốn sắp xếp lại dấu thời gian bằng regex Perl với mã ít nhất có thể. Định dạng ban đầu của tem thời gian như sau:Sắp xếp lại dấu thời gian bằng regex Perl
2011/12/29 20:19:45
Tất cả tôi cần làm là chuyển đổi nó để năm ở phía trước thay vì đưa ra sau khi tháng/ngày như sau:
12/29/2011 20:19:45
Tôi đã có thể đạt được điều này với 3 dòng mã dưới đây. Tôi chỉ tự hỏi nếu có một cách để làm điều này với mã ít hơn. Đặc biệt, tôi đã cố gắng loại bỏ $ 1 vào một biến trung gian và chỉ định $ 1 từ lần thay thế đầu tiên trực tiếp trong regex cho lần thay thế thứ hai, nhưng điều này dẫn đến lỗi: "Sử dụng giá trị uninitialized $ 1 trong nối (.) hoặc chuỗi. "
Nếu dòng thứ hai không thể thoát khỏi, thì có vẻ như điều này cũng không thể được chuyển xuống một dòng?
#my $ts = '2011/12/29 20:19:45'; #input to a subroutine
$ts =~ s/^(\d{4})\///;
my $year = $1;
$ts =~ s/ /\/$year /;
Nếu bạn định sửa đổi câu hỏi này, vui lòng nói lý do. Đó là cách SO, và nếu bạn là ai đó từ comp.lang.perl.misc mà tôi đã xúc phạm, tôi xin lỗi, nhưng chúng tôi có một nền văn hóa khác ở đây, và nếu bạn không thích nó, hãy quay lại clpm. Hay bạn không thấy sự trớ trêu của Perl "Có nhiều hơn một cách để làm điều đó" nhưng clpm "Chỉ có một cách để usenet" –
+1 trên bình luận của George. Xin vui lòng không down-mod mà không có một lời giải thích. Đó không phải là hữu ích cho bất cứ ai. – AWT