If you do something like this: $myarr[0] = 1; $myarr[1] = 2; print $#myarr; You'll get a printout of '1'. I believe that the $# prefix means pretty much the same as "the last indexable element of the array." You can also do things like this, though, which confuse that meaning: $#myarr = 1000; which is preallocating space for 1000 elements in the array... Hope that helps, -David On Thu, 31 Jul 1997, Jon S. Jaques wrote: > Excellent! Thank you so much, I'll be working on this immediately! The only > question I have is regarding a Perl syntax which I haven't encountered > before, which is the useage of "$#theVariable"... Why '$#'? From what I know > about recursive routines, localizing the variables is required... is that > shorthand for 'local()'? > > --Jon S. Jaques > --jjaques@grovehillsys.com > > -----Original Message----- > From: Mark Manning/Muniz Eng. <mark@cheers.jsc.nasa.gov> > To: Jon S. Jaques <jjaques@grovehillsys.com> > Date: Thursday, July 31, 1997 11:00 AM > Subject: Re: [MacPerl] invisible characters? (fwd) > > > > According to Jon S. Jaques: > > > > Okey dokey, but what about when the files are *known* to be destined for a > > Unix box? THEN what should they be saved as? > Macintosh of course. The basic reed is: Whatever computer > you are on - that is what you should always save the file > as. Thus the "Mac-to-Mac" and "Unix-to_Unix". Although it > is compartmentalizing, that is how computers are. A Mac > doesn't care about how a Unix box looks at things - only > its way of looking at things. The same is true for the > Unix boxes. Which is why there is such a thing as Fetch or > FTP. These programs were written so when files (especially > text files) are transferred from one computer to the other > they are transferred correctly. Just like the PC Exchange > program. Although now hidden in the background where most > people do not even know it exists, PC Exchange exists > solely to allow the transfer of files from one system type > (ie: Macs) to another (like the IBMs). In effect, Apple > just found a way to make the transfer transparent to a > user. So instead of now having to bring up Apple File > Exchange; you can just drag and drop files while PC > Exchange does the actual transfer in the background. Also, > during the transfer, PC Exchange does modify any text files > it might find. Just like Fetch or FTP does. :-) > > > The particular problem that *I'm* having with this is primarily due to the > > "hord" of ignoramous HTML writers that my boss insists upon employing. One > > cannot ever tell what they are saving as, or even that they know that the > > Evil SimpleText app is forbidden. (Also, does PageMill and Netscape Gold > > have same said "smartness" about them????) > Ah! That is easily fixed! Chris posted a program a while > back (and Matthias did so also) which changes the type and > creator flags. Since I do all of my work by myself - I've > never really bothered to learn how to do it. So I can't > give you a simple program to do this. However, it can't be > more than about twenty lines of code to go through and > modify all of the file's type and creator information since > it only takes about ten to fifteen lines of code to read > the entire directory structure off of a computer. :-) > > > Could a script be written that would recursively go through and force fix > > all files to the proper encoding and creator-type (BBEdit, by default) ? > (I > > also administer *another* Mac group which cannot ever get their files > right. > > This script would be an invaluable tool to any such workgroup.) > *nod* The script to recursively go through any directory is this: > > #!perl > #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% > # > @dirList = (); > @relFiles = (); > $dirList[++$#dirList] = "<Put your top level directory here>"; > while( $#dirList > -1 ){ > $theDir = $dirList[$#dirList]; > $#dirList--; > > opendir( THEDIR, $theDir ); > @theList = grep( !/^\.\.?$/, readdir(THEDIR) ); > closedir( THEDIR ); > > for( $i=0; $i<=$#theList; $i++ ){ > if( -d "$theDir:$theList[$i]" ) { > $dirList[++$#dirList] = "$theDir:$theList[$i]"; > } > else { > $relFiles[++$#relFiles] = "$theDir:$theList[$i]"; > } > } > } > # > #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% > # > > In the above program you would remove the $relFiles > references and change the ELSE statement on the IF > statement to have to commands which modify the type and > creator information. Don't forget to use the full pathname > of the file (ie: $theDir:$theList[$i]). Otherwise you > might get strange and wonderful things happening on your > computer. :-) > > > > > ***** Want to unsubscribe from this list? > ***** Send mail with body "unsubscribe" to mac-perl-request@iis.ee.ethz.ch > ***** Want to unsubscribe from this list? ***** Send mail with body "unsubscribe" to mac-perl-request@iis.ee.ethz.ch