Re: reg exp continued need pulled from reference
D. Bolliger [EMAIL PROTECTED] wrote:oryann9 am Montag, 18. Dezember 2006 19:52: D. Bolliger wrote: [snipped] How are my quesitons unclear??? [snipped] I answered offlist. Sorry to all for the noise of this notice. Dani thank god! -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Re: reg exp continued need pulled from reference
Anyway. When you print $dub_values and it shows up as an array ref as ARRAY(0x4002c164) and you want the values of this arrayref, you have to dereference it in some way. Start with printing out @$dub_values. Or assign it before if you want bigger freedom to format the values: my @[EMAIL PROTECTED]; # handle @dub_values_arr Hope this helps Dani I don't mean to sound negative, but did you even look at my code? I know how to dereference and I was just printing this in my debugging efforts. dublin_aref = [EMAIL PROTECTED] Again, @dublin_arry contains a glob like so: glob(/home/oryann9/passwd.*) dub_values are the values within the hash %dublin_hosts while dub_key is the regexp from the filenames that is the key within the hash %dublin_hosts. As an example, each key is the regexp of each file name from the array reference: passwd.dubhpr01.hpux after being parsed by my regexp I get dubhpr01.hpux Each values are the various fields in the passwd files. My Goal is below key=dubhpr01.hpux values=name,uid,gid,comments Here is the snippet of code I am working on now: 1 use strict; 2 use warning; 3 use diagnostics; 4 5 my @dublinaray = glob(/home/oryann9/passwd.*); 6 my $dublin_aref = [EMAIL PROTECTED]; 7 my (%dublin_hosts) = (); 8 my ($dub_key,$dub_values,); 9 10 parse_file(); 11 12 13 sub parse_file { 14 foreach my $element ( @{$dublin_aref} ) { 15 { local *FILE; 16 open (FILE, +$element) or die dublin reference did not open: $!; 17 local $/ = undef; 18($dub_key)= $element =~ m|\.(\w+\.\w+)\z|i; 19 ($dub_values) = split /:/, FILE; 20push ( @{$dublin_hosts{$dub_key}}, $dub_values ); 21print Dumper(KEY\t,$dub_key,\n\n); 22print Dumper(ELEMENTS\t,$element,\n\n); 23print Dumper(DUB VALUES\t,$dub_values,\n\n); 24 } 25} 26while ( ($dub_key,$dub_values) = each %dublin_hosts ) { 27print Dumper($dub_key = $dub_values\n); 28} 29 30 } ##-- END SUB --## Here is my question I have a line of code like so: $dub_key = $dub_values\n; that prints dubhpr28.hpux = ARRAY(0x4002e1bc) but I want to have printed out the values contained in the $dub_values arrayref instead of its address. What do I have to change to achieve this? thank you __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Re: reg exp continued need pulled from reference
oryann9 [EMAIL PROTECTED] wrote: Here is my question I have a line of code like so: $dub_key = $dub_values\n; that prints dubhpr28.hpux = ARRAY(0x4002e1bc) but I want to have printed out the values contained in the $dub_values arrayref instead of its address. What do I have to change to achieve this? thank you I got it working...never mind. I shall be back... : ) thank you __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
reg exp continued need pulled from reference
Hello... I have thought about this one and tried various code changes but cannot get what I want. My problem: mismatched UIDs in password files. My solution: #1 store passwd files in a globbed array #2 create array reference from globbed array #3 open array ref, create hash with more than one value per key. Keys are regexps from filenames #4 read in every line of passwd files from reference. Values in hash need to be passwd entries For example: key = servernames.platform (dubhpr01.hpux) values = filelds from passwd file (name,uid,gid,comments) #5 Once hash is built, traverse through searching for usernames that have unlike UIDs from all files, then print these to an xls using SpreadSheet::WriteExcel. In my code I have completed 1,2 and 3. Started 4 but I am printing the array reference address as opposed to printing the actual values. What am I doing wrong and any tips would be nice? _OUTPUT_ KEY dubhst14.hpux ELEMENTS /home/dbsmith/passwd.dubhst14.hpux DUB VALUES root KEY dubhdv05.hpux ELEMENTS /home/dbsmith/passwd.dubhdv05.hpux DUB VALUES root dubhst14.hpux = ARRAY(0x4002b0f8) dubhdv05.hpux = ARRAY(0x4059c9a4) dubhadm3.hpux = ARRAY(0x4059c8f0) dwhetls2.hpux = ARRAY(0x4002c164) dubhadm1.hpux = ARRAY(0x4059c8a8) oftappp1.hpux = ARRAY(0x405a2084) dubhpr28.hpux = ARRAY(0x4002e1bc) cic2.hpux = ARRAY(0x4059c6f8) #!/usr/bin/perl ##-- Initialize environment --## use strict; use warnings; use diagnostics; use Spreadsheet::WriteExcel; #use Data::Dumper; $ENV{PATH} = qq(/usr/bin:/bin:/home/dbsmith:/home/dbsmith/McGaw); delete @ENV{qw (IFS CDPATH ENV KSH_ENV BASH_ENV)}; ##-- Central DIE routine --## open (LOG, /tmp/uid_ck.log) or warn uid_ck.log did not open $!; my $overide = $SIG{__DIE__}; ## get error handler currently assigned 2 die $SIG{__DIE__} = sub { my $error = shift; ## error now holds the mesg passed to die $overide-($error) if ( ref $overide ); print LOG ($error); }; ##-- BEGIN MAIN --## my @dublinaray = glob(/home/dbsmith/passwd.*); my $dublin_aref = [EMAIL PROTECTED]; my @mcgawaray = glob(/home/dbsmith/McGaw/passwd.*); my $mcgaw_aref = [EMAIL PROTECTED]; my (%dublin_hosts,%mcgaw_hosts) = (); my ($dub_key,$dub_values,$mcg_key,$mcg_values); parse_file(); sub parse_file { foreach my $element ( @{$dublin_aref} ) { { local *FILE; open (FILE, +$element) or die dublin reference did not open: $!; local $/ = undef; ($dub_key) = $element =~ m|\.(\w+\.\w+)\z|i; ($dub_values) = split /:/, FILE ; push ( @{$dublin_hosts{$dub_key}}, $dub_values ); print KEY\t,$dub_key,\n\n; print ELEMENTS\t,$element,\n\n; print DUB VALUES\t,$dub_values,\n\n; } } while ( ($dub_key,$dub_values) = each %dublin_hosts ) { print $dub_key = $dub_values\n; } #foreach my $host (sort keys %dublin_hosts) { #print $host: @{$dublin_hosts{$dub_key}}\n; #} #foreach my $element2 ( @{$mcgaw_aref} ) { # { local *FILE2; # open (FILE2, +$element2) or die mcgaw reference did not open: $!; # local $/ = undef; # ($mcg_key) = $element2 =~ m|\.(\w+\.\w+)\z|i; # push (@{$mcgaw_hosts{$mcg_key}}, $mcg_values ); # print \n$element2\n\n; # print ; # } #} } ##-- END SUB --## __ I looked in the cookbook and as I tried to implement is below. Am I on the right road? thank you 5.7. Hashes with Multiple Values Per KeyProblem You want to store more than one value for each key. Solution Store an array reference in $hash{$key}, and put the values into that array. __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Re: reg exp continued need pulled from reference
oryann9 am Montag, 18. Dezember 2006 16:55: Hello... I have thought about this one and tried various code changes but cannot get what I want. My problem: mismatched UIDs in password files. My solution: #1 store passwd files in a globbed array #2 create array reference from globbed array #3 open array ref, create hash with more than one value per key. Keys are regexps from filenames #4 read in every line of passwd files from reference. Values in hash need to be passwd entries For example: key = servernames.platform (dubhpr01.hpux) values = filelds from passwd file (name,uid,gid,comments) #5 Once hash is built, traverse through searching for usernames that have unlike UIDs from all files, then print these to an xls using SpreadSheet::WriteExcel. In my code I have completed 1,2 and 3. Started 4 but I am printing the array reference address as opposed to printing the actual values. What am I doing wrong and any tips would be nice? _OUTPUT_ KEY dubhst14.hpux ELEMENTS /home/dbsmith/passwd.dubhst14.hpux DUB VALUES root KEY dubhdv05.hpux ELEMENTS /home/dbsmith/passwd.dubhdv05.hpux DUB VALUES root dubhst14.hpux = ARRAY(0x4002b0f8) dubhdv05.hpux = ARRAY(0x4059c9a4) dubhadm3.hpux = ARRAY(0x4059c8f0) [snipped] #!/usr/bin/perl ##-- Initialize environment --## use strict; use warnings; use diagnostics; use Spreadsheet::WriteExcel; [snipped] print $dub_key = $dub_values\n; [snipped] Derek, I guess the reason why you got no answer when you posted the identical question in a recent thread is because, at least - your question(s) is/are unclear - your code is not trimmed - even not from comments Anyway. When you print $dub_values and it shows up as an array ref as ARRAY(0x4002c164) and you want the values of this arrayref, you have to dereference it in some way. Start with printing out @$dub_values. Or assign it before if you want bigger freedom to format the values: my @[EMAIL PROTECTED]; # handle @dub_values_arr Hope this helps Dani -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response
Re: reg exp continued need pulled from reference
D. Bolliger [EMAIL PROTECTED] wrote: I guess the reason why you got no answer when you posted the identical question in a recent thread is because, at least - your question(s) is/are unclear - your code is not trimmed - even not from comments Anyway. When you print $dub_values and it shows up as an array ref as ARRAY(0x4002c164) and you want the values of this arrayref, you have to dereference it in some way. Start with printing out @$dub_values. Or assign it before if you want bigger freedom to format the values: my @[EMAIL PROTECTED]; # handle @dub_values_arr Hope this helps Dani How are my quesitons unclear??? Man I take a beating from this help list. I have seen many questions asked that are just bone-headed questions or people are too lazy to research and I do not feel my questions fall in these categories. I stated I am printing the array reference address as opposed to printing the actual values. What am I doing wrong and any tips would be nice? How is that unclear? __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Re: reg exp continued need pulled from reference
oryann9 am Montag, 18. Dezember 2006 19:52: D. Bolliger [EMAIL PROTECTED] wrote: [snipped] How are my quesitons unclear??? [snipped] I answered offlist. Sorry to all for the noise of this notice. Dani -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response
Re: reg exp continued need pulled from reference
Dr.Ruud [EMAIL PROTECTED] wrote:Lawrence Statton XE2/N1GAK schreef: @{$aref2}[0] is 'sun' ITYM: ${$aref2}[0] is 'sun' -- Affijn, Ruud Gewoon is een tijger. -- Ok everyone, I have thought about this one and tried various code changes but cannot get what I want. My problem: redundant UIDs in password files. My solution: #1 store passwd files in a globbed array #2 create array reference from globbed array #3 open array ref, create hash with more than one value per key. Keys are regexps from filenames #4 read in every line of passwd files from reference. Values in hash need to be passwd entries For example: key = servernames.platform (dubhpr01.hpux) values = filelds from passwd file (name,uid,gid,comments) #5 Once hash is built, traverse through searching for usernames that have unlike UIDs from all files, then print these to an xls using SpreadSheet::WriteExcel. In my code I have completed 1,2 and 3. Started 4 but I am printing the array reference address as opposed to printing the actual values. What am I doing wrong and any tips would be nice? thank you _OUTPUT_ KEY dubhst14.hpux ELEMENTS/home/dbsmith/passwd.dubhst14.hpux DUB VALUES root KEY dubhdv05.hpux ELEMENTS/home/dbsmith/passwd.dubhdv05.hpux DUB VALUES root dubhst14.hpux = ARRAY(0x4002b0f8) dubhdv05.hpux = ARRAY(0x4059c9a4) dubhadm3.hpux = ARRAY(0x4059c8f0) dwhetls2.hpux = ARRAY(0x4002c164) dubhadm1.hpux = ARRAY(0x4059c8a8) oftappp1.hpux = ARRAY(0x405a2084) dubhpr28.hpux = ARRAY(0x4002e1bc) cic2.hpux = ARRAY(0x4059c6f8) #!/usr/bin/perl ##-- Initialize environment --## use strict; use warnings; use diagnostics; use Spreadsheet::WriteExcel; #use Data::Dumper; $ENV{PATH} = qq(/usr/bin:/bin:/home/dbsmith:/home/dbsmith/McGaw); delete @ENV{qw (IFS CDPATH ENV KSH_ENV BASH_ENV)}; ##-- Central DIE routine --## open (LOG, /tmp/uid_ck.log) or warn uid_ck.log did not open $!; my $overide = $SIG{__DIE__};## get error handler currently assigned 2 die $SIG{__DIE__} = sub { my $error = shift; ## error now holds the mesg passed to die $overide-($error) if ( ref $overide ); print LOG ($error); }; ##-- BEGIN MAIN --## my @dublinaray = glob(/home/dbsmith/passwd.*); my $dublin_aref = [EMAIL PROTECTED]; my @mcgawaray = glob(/home/dbsmith/McGaw/passwd.*); my $mcgaw_aref = [EMAIL PROTECTED]; my (%dublin_hosts,%mcgaw_hosts) = (); my ($dub_key,$dub_values,$mcg_key,$mcg_values); parse_file(); sub parse_file { foreach my $element ( @{$dublin_aref} ) { { local *FILE; open (FILE, +$element) or die dublin reference did not open: $!; local $/ = undef; ($dub_key)= $element =~ m|\.(\w+\.\w+)\z|i; ($dub_values) = split /:/, FILE; push ( @{$dublin_hosts{$dub_key}}, $dub_values ); print KEY\t,$dub_key,\n\n; print ELEMENTS\t,$element,\n\n; print DUB VALUES\t,$dub_values,\n\n; } } while ( ($dub_key,$dub_values) = each %dublin_hosts ) { print $dub_key = $dub_values\n; } #foreach my $host (sort keys %dublin_hosts) { #print $host: @{$dublin_hosts{$dub_key}}\n; #} #foreach my $element2 ( @{$mcgaw_aref} ) { # { local *FILE2; # open (FILE2, +$element2) or die mcgaw reference did not open: $!; # local $/ = undef; # ($mcg_key) = $element2 =~ m|\.(\w+\.\w+)\z|i; # push (@{$mcgaw_hosts{$mcg_key}}, $mcg_values ); # print \n$element2\n\n; # print FILE2; # } #} } ##-- END SUB --## __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Re: reg exp continued need pulled from reference
oryann9 [EMAIL PROTECTED] wrote: Dr.Ruud wrote: Lawrence Statton XE2/N1GAK schreef: @{$aref2}[0] is 'sun' ITYM: ${$aref2}[0] is 'sun' -- Affijn, Ruud Gewoon is een tijger. -- Ok everyone, I have thought about this one and tried various code changes but cannot get what I want. My problem: redundant UIDs in password files. My solution: #1 store passwd files in a globbed array #2 create array reference from globbed array #3 open array ref, create hash with more than one value per key. Keys are regexps from filenames #4 read in every line of passwd files from reference. Values in hash need to be passwd entries For example: key = servernames.platform (dubhpr01.hpux) values = filelds from passwd file (name,uid,gid,comments) #5 Once hash is built, traverse through searching for usernames that have unlike UIDs from all files, then print these to an xls using SpreadSheet::WriteExcel. In my code I have completed 1,2 and 3. Started 4 but I am printing the array reference address as opposed to printing the actual values. What am I doing wrong and any tips would be nice? thank you _OUTPUT_ KEY dubhst14.hpux ELEMENTS /home/dbsmith/passwd.dubhst14.hpux DUB VALUES root KEY dubhdv05.hpux ELEMENTS /home/dbsmith/passwd.dubhdv05.hpux DUB VALUES root dubhst14.hpux = ARRAY(0x4002b0f8) dubhdv05.hpux = ARRAY(0x4059c9a4) dubhadm3.hpux = ARRAY(0x4059c8f0) dwhetls2.hpux = ARRAY(0x4002c164) dubhadm1.hpux = ARRAY(0x4059c8a8) oftappp1.hpux = ARRAY(0x405a2084) dubhpr28.hpux = ARRAY(0x4002e1bc) cic2.hpux = ARRAY(0x4059c6f8) #!/usr/bin/perl ##-- Initialize environment --## use strict; use warnings; use diagnostics; use Spreadsheet::WriteExcel; #use Data::Dumper; $ENV{PATH} = qq(/usr/bin:/bin:/home/dbsmith:/home/dbsmith/McGaw); delete @ENV{qw (IFS CDPATH ENV KSH_ENV BASH_ENV)}; ##-- Central DIE routine --## open (LOG, /tmp/uid_ck.log) or warn uid_ck.log did not open $!; my $overide = $SIG{__DIE__}; ## get error handler currently assigned 2 die $SIG{__DIE__} = sub { my $error = shift; ## error now holds the mesg passed to die $overide-($error) if ( ref $overide ); print LOG ($error); }; ##-- BEGIN MAIN --## my @dublinaray = glob(/home/dbsmith/passwd.*); my $dublin_aref = [EMAIL PROTECTED]; my @mcgawaray = glob(/home/dbsmith/McGaw/passwd.*); my $mcgaw_aref = [EMAIL PROTECTED]; my (%dublin_hosts,%mcgaw_hosts) = (); my ($dub_key,$dub_values,$mcg_key,$mcg_values); parse_file(); sub parse_file { foreach my $element ( @{$dublin_aref} ) { { local *FILE; open (FILE, +$element) or die dublin reference did not open: $!; local $/ = undef; ($dub_key) = $element =~ m|\.(\w+\.\w+)\z|i; ($dub_values) = split /:/, ; push ( @{$dublin_hosts{$dub_key}}, $dub_values ); print KEY\t,$dub_key,\n\n; print ELEMENTS\t,$element,\n\n; print DUB VALUES\t,$dub_values,\n\n; } } while ( ($dub_key,$dub_values) = each %dublin_hosts ) { print $dub_key = $dub_values\n; } #foreach my $host (sort keys %dublin_hosts) { # print $host: @{$dublin_hosts{$dub_key}}\n; #} #foreach my $element2 ( @{$mcgaw_aref} ) { # { local *FILE2; # open (FILE2, +$element2) or die mcgaw reference did not open: $!; # local $/ = undef; # ($mcg_key) = $element2 =~ m|\.(\w+\.\w+)\z|i; # push (@{$mcgaw_hosts{$mcg_key}}, $mcg_values ); # print \n$element2\n\n; # print ; # } #} } ##-- END SUB --## Incorrect problem statement. Should read My Problem: unalike UIDs in password files for users. example joe.brown uid on server a is 1222 and uid on server b is 1198. __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Re: reg exp continued need pulled from reference
oryann9 [EMAIL PROTECTED] wrote:oryann9 [EMAIL PROTECTED] wrote: Dr.Ruud wrote: Lawrence Statton XE2/N1GAK schreef: @{$aref2}[0] is 'sun' ITYM: ${$aref2}[0] is 'sun' -- Affijn, Ruud Gewoon is een tijger. -- Ok everyone, I have thought about this one and tried various code changes but cannot get what I want. My problem: redundant UIDs in password files. My solution: #1 store passwd files in a globbed array #2 create array reference from globbed array #3 open array ref, create hash with more than one value per key. Keys are regexps from filenames #4 read in every line of passwd files from reference. Values in hash need to be passwd entries For example: key = servernames.platform (dubhpr01.hpux) values = filelds from passwd file (name,uid,gid,comments) #5 Once hash is built, traverse through searching for usernames that have unlike UIDs from all files, then print these to an xls using SpreadSheet::WriteExcel. In my code I have completed 1,2 and 3. Started 4 but I am printing the array reference address as opposed to printing the actual values. What am I doing wrong and any tips would be nice? thank you _OUTPUT_ KEY dubhst14.hpux ELEMENTS /home/dbsmith/passwd.dubhst14.hpux DUB VALUES root KEY dubhdv05.hpux ELEMENTS /home/dbsmith/passwd.dubhdv05.hpux DUB VALUES root dubhst14.hpux = ARRAY(0x4002b0f8) dubhdv05.hpux = ARRAY(0x4059c9a4) dubhadm3.hpux = ARRAY(0x4059c8f0) dwhetls2.hpux = ARRAY(0x4002c164) dubhadm1.hpux = ARRAY(0x4059c8a8) oftappp1.hpux = ARRAY(0x405a2084) dubhpr28.hpux = ARRAY(0x4002e1bc) cic2.hpux = ARRAY(0x4059c6f8) #!/usr/bin/perl ##-- Initialize environment --## use strict; use warnings; use diagnostics; use Spreadsheet::WriteExcel; #use Data::Dumper; $ENV{PATH} = qq(/usr/bin:/bin:/home/dbsmith:/home/dbsmith/McGaw); delete @ENV{qw (IFS CDPATH ENV KSH_ENV BASH_ENV)}; ##-- Central DIE routine --## open (LOG, /tmp/uid_ck.log) or warn uid_ck.log did not open $!; my $overide = $SIG{__DIE__}; ## get error handler currently assigned 2 die $SIG{__DIE__} = sub { my $error = shift; ## error now holds the mesg passed to die $overide-($error) if ( ref $overide ); print LOG ($error); }; ##-- BEGIN MAIN --## my @dublinaray = glob(/home/dbsmith/passwd.*); my $dublin_aref = [EMAIL PROTECTED]; my @mcgawaray = glob(/home/dbsmith/McGaw/passwd.*); my $mcgaw_aref = [EMAIL PROTECTED]; my (%dublin_hosts,%mcgaw_hosts) = (); my ($dub_key,$dub_values,$mcg_key,$mcg_values); parse_file(); sub parse_file { foreach my $element ( @{$dublin_aref} ) { { local *FILE; open (FILE, +$element) or die dublin reference did not open: $!; local $/ = undef; ($dub_key) = $element =~ m|\.(\w+\.\w+)\z|i; ($dub_values) = split /:/, FILE; push ( @{$dublin_hosts{$dub_key}}, $dub_values ); print KEY\t,$dub_key,\n\n; print ELEMENTS\t,$element,\n\n; print DUB VALUES\t,$dub_values,\n\n; } } while ( ($dub_key,$dub_values) = each %dublin_hosts ) { print $dub_key = $dub_values\n; } #foreach my $host (sort keys %dublin_hosts) { # print $host: @{$dublin_hosts{$dub_key}}\n; #} #foreach my $element2 ( @{$mcgaw_aref} ) { # { local *FILE2; # open (FILE2, +$element2) or die mcgaw reference did not open: $!; # local $/ = undef; # ($mcg_key) = $element2 =~ m|\.(\w+\.\w+)\z|i; # push (@{$mcgaw_hosts{$mcg_key}}, $mcg_values ); # print \n$element2\n\n; # print ; # } #} } ##-- END SUB --## Incorrect problem statement. Should read My Problem: unalike UIDs in password files for users. example joe.brown uid on server a is 1222 and uid on server b is 1198. __ I looked in the cookbook and as I tried to implement is below. Am I on the right road? 5.7. Hashes with Multiple Values Per KeyProblem You want to store more than one value for each key. Solution Store an array reference in $hash{$key}, and put the values into that array. __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Re: reg exp continued need pulled from reference
Ahh, good catch -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response
Re: reg exp continued need pulled from reference
--- Lawrence Statton XE2/N1GAK [EMAIL PROTECTED] wrote: If you're dealing with variable length strings, separated by some kind of character, then regexp is the tool you want, not substr. This snippet will work so long as hostname and platform name are made up of \w ... if not, substitute in an appropriate character class. #!/usr/bin/perl use strict; use warnings; foreach my $filename (qw ( /home/dbsmith/passwd.dubhpr01.sun /some/other/path/passwd.fizzbox.hpux /yet/another/path/passwd.gronko.aix /still/more/paths/to/passwd.foohost.linux ) ) { my ($hostname, $platform) = $filename =~ m|\.(\w+)\.(\w+)$|; print Hostname: $hostname, Platform: $platform\n; } I am using Spreadsheet::WriteExcel to populate certain columns which is working, but in column A for example I am using the method write_col which requires a reference, I am printing the absolute path /home/dbsmith/passwd.dubhpr01.sun when all I need to print is sun and in column B all I will need is dubhpr01 or the hostname. For this reason I am trying to use a regexp to grab $1 and $2 or sun and dubhpr01 then use write_col method. This is not working and in my test code I want to know what data structure to use. use strict; use warnings; use Data::Dumper; my $string = qw(/home/dbsmith/passwd.dubhpr01.sun); my ($host,@OS) = $string =~ m|\.(\w+\d+)\.(\w+)$|i; my $aref = \$host; my $aref2 = [EMAIL PROTECTED]; #print $1,\n; #print $2,\n; if (ref ($aref) eq SCALAR) { print yes\n; } print newline\n; if (ref ($aref2) eq ARRAY) { print YES\n; } print ${$aref},\n; print @{$aref2}[0],\n; __OUTPUT__ yes newline YES dubhpr01 sun so my question 1 is what is @{$aref2}[0] and why isn't write_col writing its data from my code below: ##-- Write data from ref and format cells A2 and down --## my $string = qw(/home/dbsmith/passwd.dubhpr01.sun); my @host = $string =~ m|\.(\w+\d+)$|i; my $aref = [EMAIL PROTECTED]; print @{$aref},\n; if (ref ($aref) eq ARRAY) { print YES\n; $worksheet-write_col('A2',$aref,$sheet_format); } I then tried $worksheet-write_col('A2',@{$aref},$sheet_format); and I get error: Not an array ref in call to write_row()No such file or directory at uid_check.pl line 121 main::__ANON__('Not an array ref in call to write_row()No such file or direct...') called at /opt/perl/lib/5.8.2/Carp.pm line 191 Carp::croak('Not an array ref in call to write_row()No such file or directory') called at /opt/perl/lib/site_perl/5.8.2/Spreadsheet/WriteExcel/Worksheet.pm line 1354 Spreadsheet::WriteExcel::Worksheet::write_col(1,0,'Spreadsheet::WriteExcel::Format=HASH(0x40610804)') called at uid_check.pl line 121 thank you derek -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response
RE: reg exp continued need pulled from reference
Derek B. Smith mailto:[EMAIL PROTECTED] wrote: : I then tried Try something simpler, not more complex. Test this case. my @hosts = ( 'sun' ); $worksheet-write_col( 'A2', [EMAIL PROTECTED], $sheet_format ); If it fails testing then there may be a problem with write_col() or with the setup for the object $worksheet. If it does test okay then the problem may be in the data manipulation just before the call to write_col(). HTH, Charles K. Clarkson -- Mobile Homes Specialist Free Market Advocate Web Programmer 254 968-8328 http://www.clarksonenergyhomes.com/ Don't tread on my bandwidth. Trim your posts. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response
Re: reg exp continued need pulled from reference
--- Lawrence Statton XE2/N1GAK [EMAIL PROTECTED] I am using Spreadsheet::WriteExcel to populate certain columns which is working, but in column A for example I am using the method write_col which requires a reference, Not just a reference but an ARRAY reference for all the values that will go into that column (or a reference to an array of arrayrefs to write a rectangular area in one shot). The example about a fifth of the way through the Spreadsheet::WriteExcel pod shows it pretty clearly. I am printing the absolute path /home/dbsmith/passwd.dubhpr01.sun when all I need to print is sun and in column B all I will need is dubhpr01 or the hostname. So stop printing what you don't need, and start printing what you do need :) :) :) This code is not writing itself -- you have to take a smidgeon of responsibility for its output. For this reason I am trying to use a regexp to grab $1 and $2 or sun and dubhpr01 then use write_col method. This is not working and in my test code I want to know what data structure to use. Are you sure that write_col is the method you want to use in this case? use strict; use warnings; use Data::Dumper; my $string = qw(/home/dbsmith/passwd.dubhpr01.sun); my ($host,@OS) = $string =~ m|\.(\w+\d+)\.(\w+)$|i; my $aref = \$host; my $aref2 = [EMAIL PROTECTED]; Slow down a bit -- think about what you are writing. I don't want to seem bitchy, but you often post code that looks like you just keep throwing code into the file willy-nilly trying to see what sticks. This code CLEARLY has that feel. #print $1,\n; #print $2,\n; if (ref ($aref) eq SCALAR) { print yes\n; } print newline\n; if (ref ($aref2) eq ARRAY) { print YES\n; } print ${$aref},\n; print @{$aref2}[0],\n; __OUTPUT__ yes newline YES dubhpr01 sun so my question 1 is what is @{$aref2}[0] and $aref2 is[ 'sun' ] @{$aref2} is ( 'sun' ) @{$aref2}[0] is 'sun' Perhaps the reason you find yourself getting confusing output is your confusing variablenames. aref2 says nothing about the data it contains, and is dangerously similar to aref. If you are debugging something, you are going to see what SHOULD be there instead of what IS there. why isn't write_col writing its data from my code below: ##-- Write data from ref and format cells A2 and down --## my $string = qw(/home/dbsmith/passwd.dubhpr01.sun); my @host = $string =~ m|\.(\w+\d+)$|i; my $aref = [EMAIL PROTECTED]; print @{$aref},\n; if (ref ($aref) eq ARRAY) { print YES\n; $worksheet-write_col('A2',$aref,$sheet_format); } It worked for me. (Outside of the fact I had to redact the $sheet_format because you didn't post a complete runnable program.) I then tried $worksheet-write_col('A2',@{$aref},$sheet_format); and I get error: [error redacted] Well, the documentation pretty clearly calls for an arrayref in the second argument to write_col, so I have no idea why you tried passing in an array. thank you derek -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response
Re: reg exp continued need pulled from reference
--- Lawrence Statton XE2/N1GAK [EMAIL PROTECTED] wrote: --- Lawrence Statton XE2/N1GAK [EMAIL PROTECTED] I am using Spreadsheet::WriteExcel to populate certain columns which is working, but in column A for example I am using the method write_col which requires a reference, Not just a reference but an ARRAY reference for all the values that will go into that column (or a reference to an array of arrayrefs to write a rectangular area in one shot). The example about a fifth of the way through the Spreadsheet::WriteExcel pod shows it pretty clearly. I am printing the absolute path /home/dbsmith/passwd.dubhpr01.sun when all I need to print is sun and in column B all I will need is dubhpr01 or the hostname. So stop printing what you don't need, and start printing what you do need :) :) :) This code is not writing itself -- you have to take a smidgeon of responsibility for its output. For this reason I am trying to use a regexp to grab $1 and $2 or sun and dubhpr01 then use write_col method. This is not working and in my test code I want to know what data structure to use. Are you sure that write_col is the method you want to use in this case? use strict; use warnings; use Data::Dumper; my $string = qw(/home/dbsmith/passwd.dubhpr01.sun); my ($host,@OS) = $string =~ m|\.(\w+\d+)\.(\w+)$|i; my $aref = \$host; my $aref2 = [EMAIL PROTECTED]; Slow down a bit -- think about what you are writing. I don't want to seem bitchy, but you often post code that looks like you just keep throwing code into the file willy-nilly trying to see what sticks. This code CLEARLY has that feel. #print $1,\n; #print $2,\n; if (ref ($aref) eq SCALAR) { print yes\n; } print newline\n; if (ref ($aref2) eq ARRAY) { print YES\n; } print ${$aref},\n; print @{$aref2}[0],\n; __OUTPUT__ yes newline YES dubhpr01 sun so my question 1 is what is @{$aref2}[0] and $aref2 is[ 'sun' ] @{$aref2} is ( 'sun' ) @{$aref2}[0] is 'sun' Perhaps the reason you find yourself getting confusing output is your confusing variablenames. aref2 says nothing about the data it contains, and is dangerously similar to aref. If you are debugging something, you are going to see what SHOULD be there instead of what IS there. why isn't write_col writing its data from my code below: ##-- Write data from ref and format cells A2 and down --## my $string = qw(/home/dbsmith/passwd.dubhpr01.sun); my @host = $string =~ m|\.(\w+\d+)$|i; my $aref = [EMAIL PROTECTED]; print @{$aref},\n; if (ref ($aref) eq ARRAY) { print YES\n; $worksheet-write_col('A2',$aref,$sheet_format); } It worked for me. (Outside of the fact I had to redact the $sheet_format because you didn't post a complete runnable program.) I then tried $worksheet-write_col('A2',@{$aref},$sheet_format); and I get error: [error redacted] Well, the documentation pretty clearly calls for an arrayref in the second argument to write_col, so I have no idea why you tried passing in an array. thank you derek I know its an ARRAY reference why u think I wrote eq ARRAY. I am not 100% sure write_col is the method I need, that is why I post emails to this list, but I need to write data in each respective column so using write_col seems logical. Sorry u think that, but I do think about what I write and how to get to my end goal and yes you do sound bitchy and rude! My apoligies I am not a Perl know it all but this list is for posting questions so why do people like u have to make things more difficult by being negative? yes the code I provided with the OUTPUT was only test code or as u state it willy nilly. I did not want to post all 186 lines so I took out what is not working which is know as a snippett. If you seem to have all the Perl knowledge then get this code working and send me the output BECAUSE IT IS NOT WORKING FOR ME! -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response
RE: reg exp continued need pulled from reference
--- Charles K. Clarkson [EMAIL PROTECTED] wrote: Derek B. Smith mailto:[EMAIL PROTECTED] wrote: : I then tried Try something simpler, not more complex. Test this case. my @hosts = ( 'sun' ); $worksheet-write_col( 'A2', [EMAIL PROTECTED], $sheet_format ); If it fails testing then there may be a problem with write_col() or with the setup for the object $worksheet. If it does test okay then the problem may be in the data manipulation just before the call to write_col(). HTH, Charles K. Clarkson -- that worked, thank you...will keep trying. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response
reg exp continued need pulled from reference
I want to extend any apologies necessary for my last post. I am not a violent person its just I get annoyed when some people are negative, or to me, are condescending. I was not mad just upset and bothered. No biggy and the past is in the past. : ) -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response
Re: reg exp continued need pulled from reference
Lawrence Statton XE2/N1GAK schreef: @{$aref2}[0] is 'sun' ITYM: ${$aref2}[0] is 'sun' -- Affijn, Ruud Gewoon is een tijger. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ http://learn.perl.org/first-response