in reply to Re: Renaming Files
in thread Renaming Files

eep! You most certainly do need to escape backslashes, whether in single quotes or not. This is because the backslash is the escape character. If you didn't have to escape backslashes, how would you represent a newline from within a single-quoted string? perl is smart, but not that smart.

thor

Replies are listed 'Best First'.
Re: Re: Re: Renaming Files
by Tomte (Priest) on Feb 20, 2003 at 06:21 UTC
    my perl seems to be...
    #!/usr/bin/perl -w print 'test\n'; print "test\n"; __END__ test\ntest

    Update:

    perldoc perldata

    String literals are usually delimited by either single or double quotes. They work much like quotes in the standard Unix shells: double-quoted string literals are subject to backslash and variable substitution; single-quoted strings are not (except for "\'" and "\\").

    regards,
    tomte


      and mine doesn't
      #!perl -w print '\' __END__ Can't find string terminator "'" anywhere before EOF at C:\test.pl lin +e3
      ...because it thinks I'm trying to escape a single quote. So, single quotes obviously do some sort of backslash interpolation. Your original point was that he didn't have to escape the \ in "c:\path\to\something". I think of it this way: nothing interpolates within single quotes, including escape sequences. If you do something like $string = 'some string\t\n', the result will interpolate to the right thing in double quotes. Now, that having been said, one can embolden perldata another way:
      String literals are usually delimited by either single or double quotes. They work much like quotes in the standard Unix shells: double-quoted string literals are subject to backslash and variable substitution; single-quoted strings are not (except for "\'" and "\\")
      I concede that I was mistaken. My apologies.

      thor