Thank for all your explanations, yours were better than the books. Your right about perldoc perl, I found it a couple of hours after I wrote the orginal messge I had been reading for 4 hours when i wrote the orginal message. now after another 8 hours of RTFM even I can find many of my own mistakes. I quess I just got impatent and wanted something to work without doing the work need. however I did learn alot from everyone who answered my call for help. as you say in perl "there is more than one way to skin a cat"
"Tassilo Von Parseval" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > On Fri, Aug 15, 2003 at 11:44:04PM -0600 Robert Mark White wrote: > > > Please be gentle with me as this is only my first day trying to learn perl. > > I am using an online tutorial, however it must be written for *nix and I am > > trying to use it on win32. > > man perl does not even work. > > We'll come to that later... > > > I have already found some other differences. For example, the tutorial uses > > single quotes and to get anything > > to work I had to use double quotes. There must be other things that are > > different also. > > I tried to use the examples directly in an script that would be useful to > > me. Maybe I should have tried > > something a little simplier. > > > > Any polite suggestions would be greatly appreciated. > > > > Sincerely yours, > > > > > > Robert Mark White > > > > > > The attempted script is below > > Most of the lines below are directly from the tutorial so.....what! > > I think at least the "#" remark lines below should be correct! > > > > -------------------------------------------------------------------------- -- > > ------------ > > # By RMW > > # using activeperl v5.8.0 for Win32-x86-multi-tread > > # Program to add file1 to file2 > > # examples from http://www.comp.leeds.ac.uk/Perl/filehandling.html > > > > #name the files > > $file1 = "c:\Program Files\ArGo Software Design\Mail Server\Keyring_ALL"; # > > Name for file1 > > $file2 = "c:\PGP\pgp-all.asc"; # Name for file2 > > You are trying to be too smart here. Even on Windows it is totally ok to > use forward-slashes in pathnames. Perl will do the right thing for you: > > $file1 = "c:/Program Files/ArGo Software Design/Mail Server/Keyring_ALL"; > $file2 = "c:/PGP/pgp-all.asc"; > > What you did couldn't work because you used double-quotes in which '\' > is the escape character. For unknown sequences such as '\p' the result > is simply 'p'. So if you want a literal backslash appear in your > double-quoted strings, you need to escape it: "\\". > > Now, talking about RTFM. You don't have man available, so far right. But > if you have a Perl distribution, you most likely have the perldoc > program. So try > > perldoc perl > > in a DOS-prompt. It lists all the other manual pages that are available. > To learn about how to build strings, read > > perldoc perldata > > and search for "String literals" or similar. > > Depending on your Perl distribution, the documentation is probably also > available as HTML. In case of ActivePerl, you'll find an entry in the > startmenu's group of ActivePerl pointing to the documentation ("Help" or > so). > > > open(INFO, ">$file2"); # Open file2 for output > > @lines = <INFO>; # Read file2 into an array > > INFO is a write-only filehandle so you can't read from it. > > > close(INFO, "$file2"); # Close the file2 > > > > open(INFO, "<$file1"); # Open file1 for input > > print <INFO> = @lines; # Print the array into file1 > > Even if the above syntax was valid, it wouldn't work because here the > file has been opened for reading. Also, <HANDLE> is used to read from a > filehandle and not to write to it. > > > close(INFO, "$file1"); # Close the file1 > > The above would have to look like: > > open INFO_IN, "<$file2" or die "Error opening for read-access: $!"; > @lines = <INFO_IN>; > close INFO_IN; > > open INFO_OUT, ">$file1" or die "Error opening for write-access: $!"; > print INFO_OUT @lines; > close INFO_OUT; > > There are better ways of doing the above. For instance, you don't need > @lines at all. Do it all in one go: > > open INFO_IN, "<$file2" or die "Error opening for read-access: $!"; > open INFO_OUT, ">$file1" or die "Error opening for write-access: $!"; > > print INFO_OUT <INFO_IN>; > > close INFO_IN; > close INFO_OUT; > > For very large files this may need too much memory (perl internally has > to read the file into a large list), so do it line-wise: > > print INFO_OUT $_ while <INFO_IN>; > > This is a good moment to read 'perldoc perlsyn' and learn about this > syntax (it uses someting called 'statement modifiers'). > > Tassilo > -- > $_=q#",}])!JAPH!qq(tsuJ[{@"tnirp}3..0}_$;//::niam/s~=)]3[))_$-3(rellac(=_$({ > pam{rekcahbus})(rekcah{lrePbus})(lreP{rehtonabus})!JAPH!qq(rehtona{tsuJbus#; > $_=reverse,s+(?<=sub).+q#q!'"qq.\t$&."'!#+sexisexiixesixeseg;y~\n~~dddd;eval > --- Outgoing mail is certified virus free by AVG Anti-Virus System Version 6 Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.509 / Virus Database: 306 - Release Date: 8/12/2003 -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]