Link to home
Start Free TrialLog in
Avatar of jvras
jvras

asked on

Writing a file online a WEB Browers

This is a part of a script Perl to write a file to the Server. This write it in DOS Format.
My question is what to do with this script to write it in UNIX Format ?


sub write {
    my ($directory, $filename, $data, $url) = @_;
    my ($fullfile, $new);

    (!$filename) and return "Edit File: No filename was entered!";

    ($directory =~ m,/$,) ? ($fullfile = "$directory$filename") : ($fullfile = "$directory/$filename");

existing file.
    $new = 1;
    (&exists($fullfile)) and ($new = 0);

    $data =~ s,</TEXT-AREA,</TEXTAREA,ig;

# Write the file to the system.
    open(FILE,">$fullfile") or &cgierr ("Can't open: '$fullfile'.\nReason: $!");
        print FILE $data;
    close(FILE);

    if (&exists($fullfile)) {
        ($new eq 'yes') ?
            return ("Edit File: '$filename' has been created.") :
            return ("Edit File: '$filename' has been edited.");
    }
    else {
        return  ("Edit File: Cannot save '$filename'. Check permissions.");
    }
}

Thank you for helping.

jvras
Avatar of shlomoy
shlomoy

looks like it's going to work.
Avatar of jvras

ASKER

No, it's not working.

I change a perl script online and after rewrite it it's give an error.
The reason is that it's writed in DOS Format.
I have to remove the ^M and ^Z characters.
What is the code for that in this script? And where I have to place it.

Thanks
jvras
try adding this ....


open(FILE,">$fullfile") or &cgierr ("Can't open: '$fullfile'.\nReason: $!");

binmode(FILE); ## Add this line to your program


Let me know if it works
ASKER CERTIFIED SOLUTION
Avatar of monas
monas
Flag of Lithuania image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of jvras

ASKER

This is working correctly.
The code is for ^M but not for ^Z

Many thanks to monas

to make it work for ^Z try this


$data=~ s/^Z//g;

NOTE: the above is not 2 chars (^ and Z) but a single char.
you can reproduce that single char in the following way, assuming you are on a UNIX based system and use vi editor.

To get ^Z char:
In vi
* press escape
* press i
* press CTRL + V and keeping the CTRL key depressed press Z.
that will give you the ^Z  char. You can use the same method to reproduce ^M.
* press escape again

if you want i can send you the script, via email, as an attachment since i cannot directly paste the code here.
Avatar of jvras

ASKER

maneshr

Thanks for reply but I know the vi editor how to make special characters.

Your first responce about binmode isn't working. That is what I also thinking before but the answer of  monas  is
the best one.

Still thank you.
jvras
you're welcome :-)