समारोह chomp() पर्ल में

में पर्ल प्रोग्रामिंग भाषा में बनाया गया है एक समारोह chomp(). आप कर सकते हैं इस समारोह का उपयोग के साथ काम कर जब तार. सरल मामले में, समारोह chomp() पिछले हटा प्रतीक \nएसी है, जो एक पारित तर्क समारोह में.

यहाँ एक उदाहरण है:

▶ Run
#!/usr/bin/perl

my $string = "ASDF\n";

chomp($string);

print "'$string'";

इस कार्यक्रम को प्रदर्शित करता है पाठ 'ASDF'.

  • यदि चर के मूल्य के साथ अंत नहीं है \n, मूल्य में परिवर्तन नहीं होगा
  • यदि एक चर शामिल है और अधिक से अधिक एक चरित्र \n अंत में, इसे हटा दिया जाएगा केवल चरित्र \n

तर्क

यदि इस समारोह chomp पारित नहीं किया है किसी भी तर्क, फ़ंक्शन के साथ काम करता है डिफ़ॉल्ट चर $_:

▶ Run
#!/usr/bin/perl

$_ = "123\n";

chomp;

print "'$_'";

उस मामले में यदि चर $_ है undef और इस्तेमाल किया use warnings;, होगा चेतावनी:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

chomp;
Use of uninitialized value $_ in scalar chomp at script.pl line 6.

समारोह में chomp() , आप पास कर सकते हैं scalars, सरणियों, hashes. के मामले में इस हैश सुविधा केवल काम करेंगे के मूल्यों के साथ कुंजी, कुंजी खुद को नहीं बदल जाएगा.

तर्क समारोह के chomp() हमेशा होना चाहिए चर. अगर की कोशिश करने के लिए पारित करने के लिए इस समारोह में एक स्ट्रिंग में, यह त्रुटि होगा और कार्यक्रम के निष्पादन बंद कर दिया जाएगा:

▶ Run
#!/usr/bin/perl

chomp("ASDF\n"); # Error!
Can't modify constant item in chomp at script.pl line 3, near ""ASDF\n")"
Execution of script.pl aborted due to compilation errors.

वापसी मान

समारोह chomp() हमेशा रिटर्न एक पूर्णांक के बराबर या उससे अधिक 0. यदि फ़ंक्शन 0, इसका मतलब यह है कि वहाँ कोई प्रतिस्थापन है । की संख्या अधिक 0 इसका मतलब यह कितना परिवर्तन.

यहाँ का एक उदाहरण है जब एक स्थिति के समारोह chomp() संख्या देता 2:

▶ Run
#!/usr/bin/perl

my @arr = ("ASDF\n", "QWERTY\n");
print chomp(@arr);

यहाँ है एक उदाहरण का उपयोग कर वापसी के मूल्य को पूरा करने के लिए अलग अलग कोड अगर वहाँ था एक स्थानापन्न या प्रतिस्थापन नहीं था:

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $string = "ASDF\n";

if (chomp($string)) {
    say 'Removed \n';
} else {
    say 'String is unchanged';
}

print "'$string'";

चर $/

समारोह chomp() को हटा पंक्ति के अंत का प्रतीक है, जो में निहित वैश्विक चर $/. डिफ़ॉल्ट रूप से, इस चर में प्रतीक \n. लेकिन आप पोस्ट कर सकते हैं में इस एक चर के कुछ अन्य प्रतीक है, और फिर समारोह chomp() निकाल देंगे । यहाँ एक उदाहरण है:

▶ Run
#!/usr/bin/perl

$/ = "F";

my $string = "ASDF";

chomp($string);

print "'$string'";

कार्यक्रम को प्रदर्शित करेगा पाठ 'ASD'.

उस मामले में यदि चर है एक खाली स्ट्रिंग ($/ = '';), तो chomp() निकाल देंगे एकल अनुगामी \n, और सभी पात्रों \n के अंत में एक पंक्ति में हैं.

मानक का उपयोग करें

बहुत बार एक समारोह के chomp() का इस्तेमाल किया जाता है करने के लिए लाइन से लाइन को पढ़ने फ़ाइल से. प्रसंस्करण के लिए तार से एक फाइल में यह अक्सर सुविधाजनक करने के लिए इन पंक्तियों में नहीं है यह प्रतीक था \n के अंत में लाइन:

#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use open qw(:std :utf8);

my $file_name = 'a.csv';

open FILE, '<', $file_name or die $!;

while my $line (<FILE>) {
    chomp($line);
    print "Parsing line $line";
}

को दूर करने के लिए सभी पात्रों \n के अंत में लाइन

आमतौर पर एक समारोह के chomp() को हटा केवल एक ही चरित्र \n के अंत में लाइन:

▶ Run
#!/usr/bin/perl

my $string = "Line1\nLine2\n\n\n";

chomp($string);

print "'$string'";

परिणाम:

'Line1
Line2

'

वहाँ कई तरीके कैसे आप को दूर कर सकते हैं सभी प्रतीकों \n के अंत में लाइन.

यहाँ एक उदाहरण है नियमित अभिव्यक्ति का उपयोग:

▶ Run
#!/usr/bin/perl

my $string = "Line1\nLine2\n\n\n";

$string =~ s/\n*$//;

print "'$string'";

एक और रास्ता निकालने के लिए सभी अनुगामी रिक्त स्थान है करने के लिए मान सेट करें चर $/ के लिए एक खाली स्ट्रिंग:

▶ Run
#!/usr/bin/perl

$/ = '';

my $string = "Line1\nLine2\n\n\n";

chomp($string);

print "'$string'";

का उपयोग नियमित रूप से भाव में बेहतर कर रहे हैं: यह साफ है और परिवर्तन नहीं करता है जो वैश्विक चर को प्रभावित कर सकते हैं कोड में अन्य भागों का कार्यक्रम है ।

सरकारी दस्तावेज

यहाँ उत्पादन के आदेश perldoc -f chomp:

       chomp VARIABLE
       chomp( LIST )
       chomp   This safer version of "chop" removes any trailing string that
               corresponds to the current value of $/ (also known as
               $INPUT_RECORD_SEPARATOR in the "English" module).  It returns
               the total number of characters removed from all its arguments.
               It's often used to remove the newline from the end of an input
               record when you're worried that the final record may be missing
               its newline.  When in paragraph mode ("$/ = """), it removes
               all trailing newlines from the string.  When in slurp mode ("$/
               = undef") or fixed-length record mode ($/ is a reference to an
               integer or the like; see perlvar) chomp() won't remove
               anything.  If VARIABLE is omitted, it chomps $_.  Example:

                   while (<>) {
                       chomp;  # avoid \n on last field
                       @array = split(/:/);
                       # ...
                   }

               If VARIABLE is a hash, it chomps the hash's values, but not its
               keys.

               You can actually chomp anything that's an lvalue, including an
               assignment:

                   chomp($cwd = `pwd`);
                   chomp($answer = );

               If you chomp a list, each element is chomped, and the total
               number of characters removed is returned.

               Note that parentheses are necessary when you're chomping
               anything that is not a simple variable.  This is because "chomp
               $cwd = `pwd`;" is interpreted as "(chomp $cwd) = `pwd`;",
               rather than as "chomp( $cwd = `pwd` )" which you might expect.
               Similarly, "chomp $a, $b" is interpreted as "chomp($a), $b"
               rather than as "chomp($a, $b)".

अन्य लेख