2010-03-20 31 views
5

/usr/bin/env perl

use warnings; 
use strict; 

my $text = 'hello ' x 30; 

printf "%-20s : %s\n", 'very important text', $text; 

Kết quả của kịch bản này trông quặng nhiều ít như thế này:!Làm cách nào để tạo đầu ra cột trong Perl?

very important text  : hello hello hello hello 
hello hello hello hello hello hello hello hello 
hello hello hello hello hello hello hello hello 
... 

Nhưng tôi sẽ giống như một đầu ra như thế này:

very important text: hello hello hello hello 
        hello hello hello hello 
        hello hello hello hello 
        ... 

Tôi quên đề cập đến: Văn bản phải có kết thúc mở theo nghĩa là đầu bên phải của dòng văn bản phải căn chỉnh tương ứng với kích thước của thiết bị đầu cuối.

Tôi làm cách nào để thay đổi tập lệnh để đạt được mục tiêu?

+2

Xin giải thích rõ ràng – muruga

+0

Bạn đang nói về đoạn văn hoàn toàn có lý? Đó sẽ là cả hai khó khăn và xấu xí trên một thiết bị đầu cuối. Tôi đoán bạn không bao giờ làm việc với WordStar trên CPM. –

Trả lời

5

Bạn có thể sử dụng Text::Wrap:

use strict; 
use Text::Wrap; 

my $text = "hello " x 30; 
my $init = ' ' x 20; 
$Text::Wrap::columns = 80; 

print wrap ('', $init, 'very important text : ' . $text); 
+0

Đầu bên phải của dòng văn bản phải căn chỉnh tương ứng với chiều rộng của thiết bị đầu cuối. Với Text :: Wrap Tôi có chiều rộng cột cố định. –

+1

@sid_com: Bạn có thể sử dụng Thuật ngữ :: Kích thước (http://search.cpan.org/~timpx/Term-Size-0.2/Size.pm) để có chiều rộng của thiết bị đầu cuối trong cột và đặt $ Text :: Wrap: : cột phù hợp. –

+0

chấp nhận câu trả lời này liên lạc với nhận xét của Dave Sherohman. –

0

Mặc dù tôi không chắc chắn từ câu hỏi của bạn chính xác định dạng bạn muốn đầu ra, tôi có thể cho bạn biết rằng khóa để tạo đầu ra đẹp trong ngôn ngữ Perl là sử dụng định dạng.

Giới thiệu về cách sử dụng chúng để đạt được khá nhiều định dạng đầu ra bạn muốn là Perl format primer.

+0

Tôi đã có một cái nhìn tại Perl6 :: Mẫu nhưng xin vui lòng xem bình luận của tôi để karthi-27 –

3

Hãy thử điều này,

use strict; 
use warnings; 

my $text = 'hello ' x 30; 

$text=~s/((\b.+?\b){8})/$1\n      /gs; 
printf "%-20s : %s\n", 'very important text', $text; 
+0

Tôi quên đề cập đến: các văn bản cần phải có một kết thúc mở theo nghĩa là kết thúc bên phải của dòng văn bản kích thước của thiết bị đầu cuối. –

0
#!/usr/bin/env perl 
use warnings; 
use strict; 
use 5.010; 
use Text::Wrap; 
use Term::Size; 

my $text = 'hello ' x 30; 
my $init = ' ' x 22; 
my($columns, $rows) = Term::Size::chars *STDOUT{IO}; 
$Text::Wrap::columns = $columns; 

say wrap ('', $init, 'very important text : ' . $text); 
Các vấn đề liên quan