Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
For 2021 - online Python 3 training - see ((here)).

Our plans were to retire in summer 2020 and see the world, but Coronavirus has lead us into a lot of lockdown programming in Python 3 and PHP 7.
We can now offer tailored online training - small groups, real tutors - works really well for groups of 4 to 14 delegates. Anywhere in the world; course language English.

Please ask about private 'maintenance' training for Python 2, Tcl, Perl, PHP, Lua, etc.
Iterating over a Perl list and changing all items

You can loop through a list (we're supposed to call them "lists" not "arrays" in Perl these days!) using a foreach loop running a counter, or using the second form of foreach that doesn't provide a counter. Thus [source link]:

#!/usr/bin/perl
@demo1 = (20,30,50,60,80,200);
@demo2 = (40,70,90,40,20,10,0);
for ($k=0; $k<@demo1; $k++) {
  $demo1[$k] += 2;
  }
print ("@demo1\n");
foreach $item (@demo2) {
  $item += 3;
  }
print ("@demo2\n");


and that runs as follows:

$ perl prog.pl
22 32 52 62 82 202
43 73 93 43 23 13 3
$


In the first form, you're providing a counter and know the element that you're on, thus you could make a change based on the element number. In the second form, you don't have a counter;1 however, many folks don't realise that any changes you make to the "loop variable" are saved back in the list.

In other words, the second form is a very neat way of altering every element of a list. There is no need to actually know the element number, which will allow you to simplify code in many (but not position number-dependent) places.


Note that this trick only works if you specify just an array name in the foreach statement. If you wrote
  foreach $item(@this,@that)
then changes you make to $item are not reflected back in the @this and @that lists.

Further note: the words "for" and "foreach" are interchangeable, so you could save four more bytes if you really want.

Another possibility is to use the map function, or keep your own counter and use the second form of "for". So [source link]:

!#/usr/bin/perl
@demo1 = (20,30,50,60,80,200);
@demo2 = (40,70,90,40,20,10,0);
@demo1 = map($_+7,@demo1);
print ("@demo1\n");
foreach $item (@demo2) {
  $demo2[$n] += 9;
  $n++;
  }
print ("@demo2\n");


The map function is worthy of further study. Each element of a list is put into a special variable called $_ in turn. You can then perform any operation that you wish on that item.

$ prog2.pl
27 37 57 67 87 207
49 79 99 49 29 19 9
$


Illustration - delegates on a recent Perl course
(written 2010-06-15, updated 2010-06-18)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
P208 - Perl - Lists
  [28] Perl for breakfast - (2004-08-25)
  [140] Comparison Chart for Perl programmers - list functions - (2004-12-04)
  [230] Course sizes - beware of marketing statistics - (2005-02-27)
  [240] Conventional restraints removed - (2005-03-09)
  [355] Context in Perl - (2005-06-22)
  [463] Splitting the difference - (2005-10-13)
  [560] The fencepost problem - (2006-01-10)
  [622] Queues and barrel rolls in Perl - (2006-02-24)
  [762] Huge data files - what happened earlier? - (2006-06-15)
  [773] Breaking bread - (2006-06-22)
  [928] C++ and Perl - why did they do it THAT way? - (2006-11-16)
  [968] Perl - a list or a hash? - (2006-12-06)
  [1304] Last elements in a Perl or Python list - (2007-08-16)
  [1316] Filtering and altering Perl lists with grep and map - (2007-08-23)
  [1703] Perl ... adding to a list - end, middle, start - (2008-07-09)
  [1828] Perl - map to process every member of a list (array) - (2008-10-09)
  [1917] Out of memory during array extend - Perl - (2008-12-02)
  [1918] Perl Socket Programming Examples - (2008-12-02)
  [2067] Perl - lists do so much more than arrays - (2009-03-05)
  [2226] Revision / Summary of lists - Perl - (2009-06-10)
  [2295] The dog is not in trouble - (2009-07-17)
  [2484] Finding text and what surrounds it - contextual grep - (2009-10-30)
  [2833] Fresh Perl Teaching Examples - part 2 of 3 - (2010-06-27)
  [2996] Copying - duplicating data, or just adding a name? Perl and Python compared - (2010-10-12)
  [3400] $ is atomic and % and @ are molecular - Perl - (2011-08-20)
  [3548] Dark mornings, dog update, and Python and Lua courses before Christmas - (2011-12-10)
  [3669] Stepping through a list (or an array) in reverse order - (2012-03-23)
  [3870] Writing more maintainable Perl - naming fields from your data records - (2012-09-25)
  [3906] Taking the lead, not the dog, for a walk. - (2012-10-28)
  [3939] Lots of ways of doing the same thing in Perl - list iteration - (2012-12-03)
  [4609] Mapping an array / list without a loop - how to do it in Perl 6 - (2016-01-03)


Back to
What is Perl?
Previous and next
or
Horse's mouth home
Forward to
Python - splitting and joining strings
Some other Articles
Setting a safety net or fallback value in Perl
Intelligent Matching in Perl
switch and case, or given and when in Perl
Python - splitting and joining strings
Iterating over a Perl list and changing all items
What is Perl?
Igloos melt in the summer, but houses do not
A course review - for the tutor to complete
Frankfurt in 90 minutes
From home to Nurnberg - journey pictures
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2021: 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/2813_Ite ... items.html • PAGE BUILT: Sun Oct 11 16:07:41 2020 • BUILD SYSTEM: JelliaJamb