I don't want to have to call the clean() subroutine on every item returned in the split. Suppose instead of five items I had 20. Do I have to call clean($item1);, clean($item2);, ... , clean($item19);, clean($item20);? My code would look quite long. Can't I just use a for loop somehow instead?#!/usr/bin/perl use strict; use warnings; my $str = "item1 | item2| item3 |item4| "; my ($item1, $item2, $item3, $item4, $item5) = split(/\|/, $str); print "After split:\nitem1: '$item1'\nitem2: '$item2'\nitem3: '$item3' +\nitem4: '$item4'\nitem5: '$item5'\n"; clean($item1); clean($item2); clean($item3); clean($item4); clean($item5); print "After clean:\nitem1: '$item1'\nitem2: '$item2'\nitem3: '$item3' +\nitem4: '$item4'\nitem5: '$item5'\n"; exit(0); sub clean { chomp($_[0]); $_[0] =~ s/^\s+//; $_[0] =~ s/\s+$//; }
In reply to How to call a function on each item after a split? by MrSnrub
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |