--- 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>