• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 205
  • Last Modified:

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;

    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.

1 Solution
looks like it's going to work.
jvrasAuthor Commented:
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.

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
Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

$data =~ s/(\r|\035)//gi;

right after $data =~ s,</TEXT....

I'm little unsure about \035 but this should be code of ^Z in octal.

Good Look!
jvrasAuthor Commented:
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.
jvrasAuthor Commented:

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.
you're welcome :-)
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now