http://www.perlmonks.org?node_id=51608


in reply to SSI Emulation Library

Three points, after a quick scan through your code:

Using $^O =~ /win/ to detect Windows systems will fail to detect 'MSWin32' as a Windows system, and will falsely detect 'Darwin'. This was an issue for the CGI module on p5p recently; the recommended solution was $^O =~ /^MSWin/i.

Removing a trailing slash from a path can be done more easily with a regex than with substr:

$cwd = getcwd(); $path = $ENV{'DOCUMENT_ROOT'}; if ($^O =~ /^MSWin/i) { $cwd =~ s,\\$,,; $path =~ s,\\$,,; } else { $cwd =~ s,/$,,; $path =~ s,/$,,; }
However, / can be used as a directory separator in Perl on Windows, and there are other operating systems, besides Unix and Windows, and they don't all use slash or backslash as the directory separator. File::Spec would be a portable way of dealing with this issue.

Finally... Have you tested your code with HTML that contains multiple SSI directives on the same line?

Replies are listed 'Best First'.
Re: Re: SSI Emulation Library
by EvanK (Chaplain) on Jan 14, 2001 at 12:15 UTC
    First off, thanks for pointing out the /win/ thing. And about the fore- and backslashes, I only designed it for windows and *nix, but I'll look into that...and I thought the while loop would take care of multiple directives in one line...

    ______________________________________________
    When I get a little money, I buy books. If I have any left over, I buy food and clothes. -Erasmus