Perl __DATA__ construct.

Benjamin Kaplan benjamin.kaplan at case.edu
Mon Jun 25 17:41:52 EDT 2012


On Mon, Jun 25, 2012 at 2:20 PM, Mladen Gogala <gogala.mladen at gmail.com> wrote:
> I have a script in Perl that I need to rewrite to Python. The script
> contains __DATA__ at the end of the script, which enables Perl to access
> all the data after that through a file descriptor, like this:
>
> usage() if ( !$stat or !defined($home) or !defined($base) or !defined
> ($sid) );
> while (<DATA>) {
>    s/%OB/$base/;
>    if ( length($home) > 0 ) {
>        s/%OH/$home/;
>    }
>    else {
>        s/\/%OH$//;
>    }
>    if ( length($sid) > 0 && /%OS/ ) {
>        s/%OS/$sid/;
>    }
>    elsif (/%OS/) {
>        next;
>    }
>    s/%VR/$ver/;
>    print;
> }
> __DATA__
> # .bashrc
> # Source global definitions
> if [ -f /etc/bashrc ]; then
>        . /etc/bashrc
> fi
> set -a
>
> # User specific aliases and functions
> export PATH=/sbin:/bin:/usr/sbin:$PATH
> export EDITOR=vi
> export ORACLE_BASE=%OB
> export ORACLE_HOME=$ORACLE_BASE/product/%VR/%OH
> export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/opt/odbc/lib:$ORACLE_HOME/lib32
> export CLASSPATH=/opt/java/lib/tools.jar:$ORACLE_HOME/jdbc/lib/
> ojdbc14.jar:.
>
> ......
>
>
>
> How do I do the same thing in Python? Alternatively, in Perl I can put an
> entire file into a string by using something like:
>
> $str=<<EOF
> This is all a single string,
> no matter how many lines do
> I put in it, but I do have to
> escape the special character
> EOF
> ;
>
> Is there a way to do the same thing in Python? The idea of the script is
> to generate $HOME/.bashrc for any automagically provisioned Oracle
> installation.
>
either escape the new-line
'hello \
world'

or use triple-quoted strings
"""hello
world"""

http://docs.python.org/tutorial/introduction.html#strings



More information about the Python-list mailing list