Greetings, O Wise Ones... I'm trying to understand the behavior I'm getting from this code:
#!Perl ################################################################################ # PROGRAM: array_test1.pl ################################################################################ use strict; use warnings; my $string1 = "Windows XP Professional Service Pack 2 (build 2600) Hewlett-Packard"; my $string2 = " Windows XP Professional Service Pack 2 (build 2600) Hewlett-Packard "; my @ary1; my @ary2; @ary1 = split( " ", $string1 ); my ($win_type1, $win_ver1, $svc_pack1, $win_build1); $win_type1 = $ary1[1]; $win_ver1 = $ary1[2]; for ($win_type1) { /XP/ && do { $svc_pack1 = $ary1[5]; ($win_build1 = $ary1[7]) =~ s{\)}{}; last; }; } print "Current Method...\n"; print "Type: \"$win_type1\", Version: \"$win_ver1\",\n"; print "Service Pack: \"$svc_pack1\", Build: \"$win_build1\"\n\n"; my ($win_type2, $win_ver2, $svc_pack2, $win_build2); for ($string1) { /XP/ && do { ($win_type2, $win_ver2, $svc_pack2, $win_build2) = (split( /\s+/, $string1 ))[1, 2, 5, 7]; last; }; } $win_build2 =~ s{\)}{}; print "Proposed Method...\n"; print "Type: \"$win_type2\", Version: \"$win_ver2\",\n"; print "Service Pack: \"$svc_pack2\", Build: \"$win_build2\"\n"; @ary1 = split( " ", $string1 ); $win_type1 = $ary1[1]; $win_ver1 = $ary1[2]; for ($win_type1) { /XP/ && do { $svc_pack1 = $ary1[5]; ($win_build1 = $ary1[7]) =~ s{\)}{}; last; }; } print "\nFILE string:\n"; print "Current Method...\n"; print "Type: \"$win_type1\", Version: \"$win_ver1\",\n"; print "Service Pack: \"$svc_pack1\", Build: \"$win_build1\"\n\n"; for ($string2) { /XP/ && do { ($win_type2, $win_ver2, $svc_pack2, $win_build2) = (split( /\s+/, $string2 ))[1, 2, 5, 7]; last; }; } $win_build2 =~ s{\)}{}; print "Proposed Method...\n"; print "Type: \"$win_type2\", Version: \"$win_ver2\",\n"; print "Service Pack: \"$svc_pack2\", Build: \"$win_build2\"\n"; ################################################################################ # PROGRAM OUTPUT: ################################################################################ Current Method... Type: "XP", Version: "Professional", Service Pack: "2", Build: "2600" Proposed Method... Type: "XP", Version: "Professional", Service Pack: "2", Build: "2600" FILE string: Current Method... Type: "XP", Version: "Professional", Service Pack: "2", Build: "2600" Proposed Method... Type: "Windows", Version: "XP", Service Pack: "Pack", Build: "(build" The red text illustrates the error (if such it be?). My SWAG is that the "nothing" between Perl's '^' anchor and the first space in $string2 is what's causing the problem. Can someone confirm this? Or provide me with the correct answer if I'm wrong? Thanks! Deane Rothenmaier Programmer/Analyst - IT-StdCfg Walgreens Corp. 2 Overlook Point #N51022D MS 6515 Lincolnshire, IL 60069 224-542-5150 I will make sure that my doomsday device is up to code and properly grounded. - Peter Anspach's list of 100 things to do when one becomes an Evil Overlord
_______________________________________________ ActivePerl mailing list ActivePerl@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs