Perl __DATA__ construct.

Mladen Gogala gogala.mladen at gmail.com
Mon Jun 25 17:20:25 EDT 2012


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.

-- 
http://mgogala.byethost5.com



More information about the Python-list mailing list