Jaschar Otto wrote: > I'm always an very curious guy and i just because of that i made a little > script that analyises my scripts, extracts the subs, counts lines, > mys, uses, subs, etc... maybe some of you are as courious as i am > but too lazy to do that for yourself, so i want to share it with the > perl community. > > totally uncommented, unsupported and without any warranty ;-) > it's just a little program with few functions but maybe you want to > add some. If you make changes or want to suggest something, > mail the changed code/suggestion to me, plz :-) > > usage : > perl <scriptname.pl> <ScriptToAnalyse.pl> > > result : > writes all subs into the subdirectory 'subs' and several other stats > into 'subs/misc' (directorys must exist) > > i'm just a newb and i'm always open for suggestions how to improve > things i made :) > > yours > Jaschar Otto aka whoever > > use strict; > my ($insub, $bracks); > my ($currs, $line);
If $currs to9 some pack of angry dogs, the proper spelling would be curs. Otherwise your name should tell us something about the contents. > > my ($subnumber); > my ($usenumber); > > $line = 0; > $currs = "main"; > $subnumber = 0; > $usenumber = 0; > > open FILE,"$ARGV[0]"; > open MAIN,">subs/misc/main.txt"; > open DEVA,">subs/misc/vars.txt"; > open SUBS,">subs/misc/subs.txt"; > open USES,">subs/misc/uses.txt"; > open MISC,">subs/misc/misc.txt"; > > print SUBS "Sub#\t\tLine\t\tName\n"; > print USES "Use#\t\tLine\t\tName\n"; > while (<FILE>) { > $line += 1; > if (($line == 1) && ($_ =~ /^\#!/)) { > my ($x); Does this variable refer to a mark on the ground? Again, the name of a variable should relfect what it is used for. > > $x = $_; > $x =~ s/#!//; > $x =~ s/\s+.*//; > print MISC "Perl path\t: $x"; > } > if ($_ =~ /^#/) { > $_ = ""; > } > if (($insub == 0) && ($_ !~ /^sub /)) { > print MAIN "$_" if ($_ ne "\n"); > } > if ($_ =~ /^sub /) { > $subnumber += 1; > $insub = 1; > $_ =~ m/^sub (\w+) /; > $currs = $1; > print SUBS "$subnumber\t\t$line\t\t$currs\n"; > open SUB,">subs/$currs.txt"; > $bracks = 1; > } elsif ($_ =~ /\{/) { > $bracks += 1; > } elsif ($_ =~ /\}/) { > $bracks -= 1; > } > if (($insub) && ($bracks == 0)) { > $insub = 0; > $currs = "main"; > print SUB "}\n"; > close SUB; > } elsif (($insub) && ($bracks > 0)) { > print SUB "$_"; > } > if ($_ =~ /my(\s*)\(/) { > my ($cusu, $myline); > $_ =~ m/(\t*)(.+)/; > $cusu = $currs; > $cusu .= " " while (length($cusu) < 12); > $myline = $_; > $myline =~ s/\t//g; > $myline =~ s/\s//g; > print DEVA "sub $cusu \t-> $myline\n"; > } > if ($_ =~ /use (.+)/) { > $usenumber += 1; > print USES "$usenumber\t\t$line\t\t$1\n"; > } > } > print MISC "Total lines\t: $line\n"; > print MISC "Total uses \t: $usenumber\n"; > print MISC "Total subs \t: $subnumber\n"; > > close FILE; > close MAIN; > close DEVA; > close SUBS; > close USES; > close MISC; Please note one very important difference between source-code programming and algebra. Source code in Perl and most current languages places no restrictions on length of variable names. Therefore, there is really never any need to give varaible names leave the purpose of the variable a mystery. Mysteries to not contribute well to power programming. Joseph -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]