Hi So I created the following script for outputing to a wiki page. The problem is that I am not sure in how to format my output. Here is my code:
#!/usr/bin/perl
use strict;
use warnings;
use POSIX qw/strftime/;
#use warnings;
my $TOTALIOS = 'totalios';
my $READP = 'readpe';
my $CACHEP = 'cachehit';
my $CKBSEC = 'currentkb';
my $MKBSEC = 'maximumkb';
my $CIOSEC = 'currentio';
my $MIOSEC = 'maxio';
my $DATESTORE = 'dates.sec';
my $DATECMD = strftime "%m/%d/%y", localtime;
my $TIOS = 'Tios';
my $READp = 'readp';
my $CACHEp = 'cachep';
my $CKBsec = 'ckbsec';
my $MKBsec = 'mkbsec';
my $CIOsec = 'ciosec';
my $MIOsec = 'miosec';
my ($STORENUM, $STORENAME, $IMGPREFIX, $MONTH, $DAY, $YEAR) = &mysubinput;
sub mysubinput
{
print "Enter the number for the datastore: \n";
my $STORENUM = <STDIN>;
chomp($STORENUM);
print "Enter the name for the datastore e.g: DataStore or ServerStore: \n";
my $STORENAME = <STDIN>;
chomp($STORENAME);
print "Enter the data store image prefix e.g. datastore or serverstore: \n";
my $IMGPREFIX = <STDIN>;
chomp($IMGPREFIX);
print "Enter the month MM: \n";
my $MONTH = <STDIN>;
chomp($MONTH);
print "Enter the day DD: \n";
my $DAY = <STDIN>;
chomp($DAY);
print "Enter the Year YYYY: \n";
my $YEAR = <STDIN>;
chomp($YEAR);
return ($STORENUM, $STORENAME, $IMGPREFIX, $MONTH, $DAY, $YEAR);
# print "$STORENUM $STORENAME $IMGPREFIX $MONTH $DAY $YEAR\n";
# print "Not a very interesting routine\n";
# print "This does the same thing every time\n";
# print "$TOTALIOS\n";
# print "Enter the number for the datastore: \n";
# $line = <STDIN>;
# chomp($line);
# print "$line\n";
# print "$DATECMD\n";
}
sub writedate
{
print "! $DATECMD\n";
}
sub writesections(mysubinput())
{
print "| [[File:$STORENAME-$STORENUM-$TIOS-$MONTH-$DAY-$YEAR.png| 100px]]\n";
print "| [[File:$STORENAME-$STORENUM-$READp-$MONTH-$DAY-$YEAR.png| 100px]]\n";
print "| [[File:$STORENAME-$STORENUM-$CACHEp-$MONTH-$DAY-$YEAR.png| 100px]]\n";
print "| [[File:$STORENAME-$STORENUM-$CKBsec-$MONTH-$DAY-$YEAR.png| 100px]]\n";
print "| [[File:$STORENAME-$STORENUM-$MKBsec-$MONTH-$DAY-$YEAR.png| 100px]]\n";
print "| [[File:$STORENAME-$STORENUM-$CIOsec-$MONTH-$DAY-$YEAR.png| 100px]]\n";
print "| [[File:$STORENAME-$STORENUM-$MIOsec-$MONTH-$DAY-$YEAR.png| 100px]]\n";
}
sub writepage
{
&mysubinput;
print "Go back to [[MD3000i-Perf]] \n";
print "{| border=1 cellspacing=5 cellpadding=2 style=text-align: center \n";
print "|-\n";
print "! [[DataStore-1]]\n";
print "! [[DataStore-2]]\n";
print "! [[DataStore-3]]\n";
print "! [[DataStore-4]]\n";
print "! [[DataStore-5]]\n";
print "! [[DataStore-6]]\n";
print "! [[DataStore-7]]\n";
print "! [[DataStore-8]]\n";
print "! [[DataStore-9]]\n";
print "|-\n";
print "| [[File:disk.png |60px]]\n";
print "| [[File:disk.png |60px]]\n";
print "| [[File:disk.png |60px]]\n";
print "| [[File:disk.png |60px]]\n";
print "| [[File:disk.png |60px]]\n";
print "| [[File:disk.png |60px]]\n";
print "| [[File:disk.png |60px]]\n";
print "| [[File:disk.png |60px]]\n";
print "| [[File:disk.png |60px]]\n";
print "|}\n";
print "{| border=1 cellspacing=5 cellpadding=2 style=text-align: center\n";
print "|-\n";
&writedate;
print " |-\n";
&writesections;
print " |-}\n";
}
#&mysubinput;
&writepage;
#&mysubinput;
#&writesections;
Using this approach things seem to work. However, my input is not 100% right. I have to input all my data twice, before the program can spit somthing ….
Enter the number for the datastore:
1
Enter the name for the datastore e.g: DataStore or ServerStore:
DataStore
Enter the data store image prefix e.g. datastore or serverstore:
datastore
Enter the month MM:
12
Enter the day DD:
03
Enter the Year YYYY:
2012
Enter the number for the datastore:
1
Enter the name for the datastore e.g: DataStore or ServerStore:
DataStore
Enter the data store image prefix e.g. datastore or serverstore:
datastore
Enter the month MM:
12
Enter the day DD:
03
Enter the Year YYYY:
2012
Go back to [[MD3000i-Perf]]
{| border=1 cellspacing=5 cellpadding=2 style=text-align: center
|-
! [[DataStore-1]]
! [[DataStore-2]]
! [[DataStore-3]]
! [[DataStore-4]]
! [[DataStore-5]]
! [[DataStore-6]]
! [[DataStore-7]]
! [[DataStore-8]]
! [[DataStore-9]]
|-
| [[File:disk.png |60px]]
| [[File:disk.png |60px]]
| [[File:disk.png |60px]]
| [[File:disk.png |60px]]
| [[File:disk.png |60px]]
| [[File:disk.png |60px]]
| [[File:disk.png |60px]]
| [[File:disk.png |60px]]
| [[File:disk.png |60px]]
|}
{| border=1 cellspacing=5 cellpadding=2 style=text-align: center
|-
! 12/04/12
|-
| [[File:DataStore-1-Tios-12-03-2012.png| 100px]]
| [[File:DataStore-1-readp-12-03-2012.png| 100px]]
| [[File:DataStore-1-cachep-12-03-2012.png| 100px]]
| [[File:DataStore-1-ckbsec-12-03-2012.png| 100px]]
| [[File:DataStore-1-mkbsec-12-03-2012.png| 100px]]
| [[File:DataStore-1-ciosec-12-03-2012.png| 100px]]
| [[File:DataStore-1-miosec-12-03-2012.png| 100px]]
|-}
Things seem to work now after adding this variable to ‘my’
my ($STORENUM, $STORENAME, $IMGPREFIX, $MONTH, $DAY, $YEAR) = &mysubinput;
second piece was to add
return ($STORENUM, $STORENAME, $IMGPREFIX, $MONTH, $DAY, $YEAR);
Now my questions is how do i get the output from sub writesections into a file, such as datastore.wk?
Do not ever comment the
use strictline 🙂It would alert you that your
writesectionssub doesn’t have the access to the variables declared inside the scope ofmysubinput!I suggest you to learn about private variables first. To share your variables, you should
returnthem. Following your logic:However, if you expect to grow your Perl script, sooner or later you’ll have to learn Object-Oriented Programming. Then, Moose framework is your friend.