2010-03-20 20 views
5

/usr/bin/env पर्ल

use warnings; 
use strict; 

my $text = 'hello ' x 30; 

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

इस स्क्रिप्ट का उत्पादन अधिक अयस्क इस तरह कम लग रहा है:मैं पर्ल में कॉलम आउटपुट कैसे बना सकता हूं?

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

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

लेकिन मैं इस तरह एक आउटपुट चाहते हैं

मैं उल्लेख करना भूल गया: टेक्स्ट को इस अर्थ में एक खुला अंत होना चाहिए कि टेक्स्टलाइन के दाहिने सिरे को टर्मिनल के आकार के अनुरूप संरेखित करना चाहिए।

मैं अपने लक्ष्य तक पहुंचने के लिए अपनी स्क्रिप्ट कैसे बदल सकता हूं?

+2

कृपया स्पष्ट रूप से समझाने – muruga

+0

आप के बारे में पूरी तरह से उचित पैराग्राफ में बात कर रहे हैं? यह टर्मिनल पर कड़ी और बदसूरत दोनों होने जा रहा है। मुझे लगता है कि आपने सीपीएम पर वर्डस्टार के साथ कभी काम नहीं किया। –

उत्तर

5

आप 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

टेक्स्ट-लाइनों का दायां अंत टर्मिनल की चौड़ाई के अनुरूप संरेखित होना चाहिए। टेक्स्ट :: लपेटें के साथ मेरे पास कॉलम की एक निश्चित चौड़ाई है। –

+1

@sid_com: टर्मिनल की चौड़ाई कॉलम में प्राप्त करने के लिए आप टर्म :: साइज (http://search.cpan.org/~timpx/Term-Size-0.2/Size.pm) का उपयोग कर सकते हैं और $ टेक्स्ट सेट कर सकते हैं :: लपेटें: : तदनुसार कॉलम। –

+0

ने डेव शेरोहमैन टिप्पणी के साथ इस उत्तर को संपर्क में स्वीकार कर लिया। –

0

जबकि मुझे आपके प्रश्न से निश्चित रूप से यकीन नहीं है कि आप अपने आउटपुट को किस प्रारूप में देखना चाहते हैं, मैं आपको बता सकता हूं कि पर्ल भाषा में सुंदर आउटपुट की कुंजी प्रारूपों का उपयोग करना है।

Perl format primer पर किसी भी आउटपुट स्वरूपण को प्राप्त करने के लिए उन्हें उपयोग करने के तरीके पर एक प्राइमर है।

+0

मुझे पर्ल 6 :: फॉर्म पर एक नज़र आया है, लेकिन कृपया मेरी टिप्पणी देखें karthi-27 –

3

इस प्रयास करें,

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

मैं उल्लेख करना भूल गया: टेक्स्ट को इस अर्थ में एक खुला अंत होना चाहिए कि टेक्स्ट-लाइनों का दायां अंत संगत होना चाहिए टर्मिनल का आकार। –

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); 
संबंधित मुद्दे