Perl script segfaults if I remove a print !!!

Hi,
I'm currently trying to resolve a segmentation fault I met 6 months ago. I've resolved it by forcing a delete of of hash keys in the right order. However, I would like to let Perl delete the variables when they are out of scope, without having to forcing it. I wrote a perl script that works, however only if I do not comment out a print statement! You can try my code which is hosted at http://pastebin.com/tgjXHFgc
Before executing it you'll need to create the directory /tmp/test or to change the DIR constant, and to fix the real path to your Sleepycat::DbXml installation (line 2 in my code)
If I comment out the line 33 the script segfaults. If you, the guys who wrote this API could find the reason of this bug, I would appreciate it :)

The code crash before calling any DBXML functions. So it looks like a pure perl coding/lib issue.I do not agree. The code crash after having checked for the document in the database and having stored it.
09:59:47|cyril@lizzie:/tmp$ rm -f /tmp/test/*
10:00:45|cyril@lizzie:/tmp$ perl test.pl
<a>
<title> my title </title>
<balance id="10"> amount of balance </balance>
</a>
Storing document
Database handles still open at environment close
Segmentation fault
10:00:46|cyril@lizzie:/tmp$ ls /tmp/test
__db.001 __db.003 __db.005 log.0000000001
__db.002 __db.004 __db.006 test.dbxml
dbxml_dump -h /tmp/test test.dbxml|grep -A 100 secondary_document
xml_database=secondary_document
VERSION=3
format=bytevalue
type=btree
db_pagesize=8192
keys=1
HEADER=END
02011d
6462786d6c5f3200
02361d
437972696c00
02371d
20342031303a30303a3436203230313100
02381d
726567756c617200
DATA=END
xml_database=node_nodestorage
VERSION=3
format=bytevalue
type=btree
db_pagesize=8192
keys=1
HEADER=END
02010200
02010200405554462d3800
02010400
02880d010107000301100a00010500
02010500
02808d010107000101040061000301000a00
02010600
021c02020105007469746c65000f01000a0000206d79207469746c652000
02010700
022e01020201050062616c616e6365001801000a000020616d6f756e74206f662062616c616e636520000700696400313000010600
DATA=END
Edited by: cscetbon on 4 juil. 2011 01:05

Similar Messages

  • Perl script to extract SAP table

    Hi everyone,
    Is that possible to use Perl script to access and extract SAP table ? Is there any documentation for this ?
    Thanks

    Here's a bit of script using SAP::Rfc to read the table TBTCO, which stores background job information.  You can find the whole script here: http://www.sapdba.com/forums/viewtopic.php?f=3&t=6.  I've removed most of it so that the following is just an example of reading the table and printing the results to stdout:
    (note, this was written on a 4.6B system)
    #!/usr/bin/perl -w
    use SAP::Rfc;
    ### Variable Declarations
    $DEBUG = 0;
    $OUTPUT = "sm37.csv";
    $JOBCOUNT = 0;
    @ICONFIG = ();
    $CFGCTR = 0;
    ### End of variable declarations
    open(OUTFILE, ">>$OUTPUT") || die ("cannot open output file ", $OUTPUT, "\n");
    my $RFC = new SAP::Rfc(
                 ASHOST   => 'servername',
                 USER     => 'username',
                 PASSWD   => 'password',
                 LANG     => 'EN',
                 CLIENT   => '010',
                 SYSNR    => '01',
                 TRACE    => '0' );
    my $IT = $RFC->discover("RFC_READ_TABLE");
    $IT->QUERY_TABLE('TBTCO');
    $IT->OPTIONS( ["ENDDATE = $MAXDATE AND ENDTIME > $MAXTIME OR ENDDATE > $MAXDATE"] );
    my @FLDARRAY = qw(JOBNAME JOBCOUNT JOBCLASS PERIODIC REAXSERVER RELUNAME SDLUNAME AUTHCKMAN EVENTID SDLSTRTDT SDLSTRTTM STRTDATE STRTTIME ENDDATE ENDTIME STATUS);
    $IT->FIELDS([@FLDARRAY]);
    $RFC->callrfc( $IT );
    print "Num Rows in PRD matching selection criteria: ".$IT->tab('DATA')->rowCount()." \n";
    for my $ROW ( $IT->DATA ) {
            print "\n\nRaw row: $ROW";
            $JOBNAME = trim(substr($ROW, 0, 32));
            $JOBID = substr($ROW, 32, 8);
            $JOBCLASS = substr($ROW, 40, 1);
            if (substr($ROW, 41, 1)) {
                    $PERIODIC = 1;
            } else {
                    $PERIODIC = 0;
            $SERVER = trim(substr($ROW, 42, 20));
            $CREATOR = trim(substr($ROW, 62, 12));
            $USERNAME = trim(substr($ROW, 74, 12));
            $MANDT = substr($ROW, 86, 3);
            $EVENT = trim(substr($ROW, 89, 32));
            $SCHDATE = substr($ROW, 121, 8);
                    $SYEAR = trim(substr($SCHDATE, 0, 4));
                    $SMONTH = trim(substr($SCHDATE, 4, 2));
                    $SDAY = trim(substr($SCHDATE, 6, 2));
            $SCHTIME = substr($ROW, 129, 6);
                    $SHOUR = trim(substr($SCHTIME, 0, 2));
                    if ($SHOUR == 24) {
                            $SHOUR = "00";
                    $SMINUTE = trim(substr($SCHTIME, 2, 2));
                    $SSECOND = trim(substr($SCHTIME, 4, 2));
            $STRDATE = substr($ROW, 135, 8);
                    $BYEAR = trim(substr($STRDATE, 0, 4));
                    $BMONTH = trim(substr($STRDATE, 4, 2));
                    $BDAY = trim(substr($STRDATE, 6, 2));
            $STRTIME = substr($ROW, 143, 6);
                    $BHOUR = trim(substr($STRTIME, 0, 2));
                    if ($BHOUR == 24) {
                            $BHOUR = "00";
                    $BMINUTE = trim(substr($STRTIME, 2, 2));
                    $BSECOND = trim(substr($STRTIME, 4, 2));
            $ENDDATE = substr($ROW, 149, 8);
                    $EYEAR = trim(substr($ENDDATE, 0, 4));
                    $EMONTH = trim(substr($ENDDATE, 4, 2));
                    $EDAY = trim(substr($ENDDATE, 6, 2));
            $ENDTIME = substr($ROW, 157, 6);
                    $EHOUR = trim(substr($ENDTIME, 0, 2));
                    if ($EHOUR == 24) {
                            $EHOUR = "00";
                    $EMINUTE = trim(substr($ENDTIME, 2, 2));
                    $ESECOND = trim(substr($ENDTIME, 4, 2));
            $STATUS = substr($ROW, 163, 1);
            if ($SCHTIME && $STRTIME && $SYEAR && $BYEAR) {
                    ($LY,$LM,$LD, $Lh,$Lm,$Ls) = Delta_YMDHMS($SYEAR,$SMONTH,$SDAY, $SHOUR,$SMINUTE,$SSECOND,
                                                              $BYEAR,$BMONTH,$BDAY, $BHOUR,$BMINUTE,$BSECOND);
                    $DELAY = ($Ls + ($Lm * 60) + ($Lh * 3600) + ($LD * 86400));
                    $LY = ""; $LM = "";
            if ($ENDTIME && ($ENDDATE >= $STRDATE) && $BYEAR && $EYEAR) {
                    ($DY,$DM,$DD, $Dh,$Dm,$Ds) = Delta_YMDHMS($BYEAR,$BMONTH,$BDAY, $BHOUR,$BMINUTE,$BSECOND,
                                                              $EYEAR,$EMONTH,$EDAY, $EHOUR,$EMINUTE,$ESECOND);
                    $DURATION = ($Ds + ($Dm * 60) + ($Dh * 3600) + ($DD * 86400));
                    if ($DURATION < 0) {
                            $DURATION = 0;
                            print "Duration less than zero, set to zero\n";
                    $DY = ""; $DM = "";
            } else {
                    $DURATION = 0;
            print OUTFILE ("$SAPSID,$JOBNAME,$JOBID,$JOBCLASS,$PERIODIC,$SERVER,$CREATOR,$USERNAME,$MANDT,$EVENT,$SCHDATE,$SCHTIME,$STRDATE,$STRTIME,$ENDDATE,$ENDTIME,$DELAY,$DURATION,$STATUS\n");
           $JOBCOUNT ++;
    $RFC->close();
    close OUTFILE;

  • Folder Action to Launch Perl Script

    Hello.
    I wrote a perl script which I wanted to execute when a file was dropped into a folder. I added a folder action with a very simple applescript:
    on adding folder items to this_folder after receiving added_items
    do shell script ¬
    ("perl /Users/Alexander/Library/Scripts/gte2.pl")
    end adding folder items to
    The folder action didn't do anything, any thoughts on what I'm doing wrong? Note, the perl script works fine when I run it from the terminal.
    thanks.

    Thanks Camelot, I appreciate the help. My script below is trying to read data from a file in folder in my system. So I will try your suggestion, I didn't realize the environment and path my be different.
    Regards Alex
    #!/usr/bin/perl -w
    #This program is to convert files from gamin running GPS watch to text file which can be loaded into excel.
    # To make executable, remember to set: chmod u+x <file>
    #set all the flags. Note the flags are used to stop the matching
    $i = 1; $k = 0; $start = "no";
    #Open data file and find values
    open(DATA,"/Users/Alexander/Alex's Misc/Health/Garmin_Conversion/run.tcx") || die "Couldn't open file*\n";
    #read in the data line by line until "end of file"
    while (<DATA>){
    #start parsing for information to keep
    if (/.<Id>./) {
    @Idline=split(/>/);
    @Idbeat=split(/T/,$Idline[1]);
    $Id=$Idbeat[0];
    if (/.<Track>./){
    $start = "yes";
    if ($start eq "yes"){
    if (/.<Time>./) {
    @timeline=split(/T/);
    @timebeat=split(/Z/,$timeline[2]);
    $Time[$i]=$timebeat[0];
    elsif (/.<LatitudeDegrees>./) {
    @HRline=split(/>/);
    @HRbeat=split(/</,$HRline[1]);
    $Latitude[$i]=$latbeat[0];
    elsif (/.<LongitudeDegrees>./) {
    @longline=split(/>/);
    @longbeat=split(/</,$longline[1]);
    $Longitude[$i]=$longbeat[0];
    elsif (/.<AltitudeMeters>./) {
    @altline=split(/>/);
    @altbeat=split(/</,$altline[1]);
    $Altitude[$i]=$altbeat[0];
    elsif (/.<DistanceMeters>./) {
    @distline=split(/>/);
    @distbeat=split(/</,$distline[1]);
    $Distance[$i]=$distbeat[0];
    elsif (/.<Value>./) {
    @HRline=split(/>/);
    @HRbeat=split(/</,$HRline[1]);
    $HR[$i]=$HRbeat[0];
    $i++;
    } #string matching
    } #if start flag is yes
    } #while data loop
    close (DATA) || die "couldn't close file.\n";
    #write all data to file in space delimited format
    open (NEWFILE, ">/Users/Alexander/Alex's Misc/Health/Garmin_Converted/$Id run") || die "can't create file.\n";
    $Time[0]="Time"; $Latitude[0]="Latitude"; $Longitude[0]="Longitude"; $Altitude[0]="Altitude"; $Distance[0]="Distance"; $HR[0]="HR";
    print NEWFILE "0 $Time[0] $Latitude[0] $Longitude[0] $Altitude[0] $Distance[0] $HR[0]\n";
    for ($j = 1; $j <= $i; $j++) {
    $k=$j+1;
    print NEWFILE "$j $Time[$j] $Latitude[$j] $Longitude[$j] $Altitude[$j] $Distance[$j] $HR[$j]\n";
    } #for j loop
    close (NEWFILE) || die "couldn't close newfile.\n";
    #This is the end of the program

  • How to launching a perl script by the "begin" script of a jumpstart

    Hi all,
    i have an urgent pb with my solaris jumpstart, let me explain to you :
    i want that the begin script launch some perl script, but i have a problem
    here is my "begin" script:
    echo "Begining ISO FLAR based jumpstart."
    echo ""
    echo "Starting Ullink Configuration"
    env > /tmp/env
    /bin/sh << EOF
    /usr/bin/perl /cdrom/.archives/admin-scripts/sethostname.pl
    EOFmy perl script use a STDIN
    with this configuration, the perl script is launching but it runs in a loop indefinitely with an error "use of uninitialized value", because (i think) a value is return to the begin scritp and not to the perl script.
    well, on a pre-installed solaris, if a launch the begin script, it happens the same thing, it runs in a loop, BUT if i comment the line "/bin/sh <<EOF" and "EOF", it works.
    at this step, i say "ok it's cool my script is working", but when i use it during the jumpstart instalaltion, the perl script does not start, without any particular error.
    here is my perl script, if you want to test :
    #!/usr/bin/perl -w^M
    # Set Hostname for Ullink Jumpstart^M
    ^M
    use strict;^M
    ^M
    sub hit_enter {^M
        print "Hit enter to continue\n";^M
        <STDIN>;^M
        print "\033[2J";^M
    }^M
    ^M
    sub get_hostname {^M
        my %towns_list = (^M
            'Paris' => 'PA',^M
            'New-York' => 'NY',^M
        );^M
    ^M
        my %sites_list = (^M
            'Office' => 'OFC',^M
            'Redbus' => 'RED',^M
            'Telehouse' => 'TLH',^M
            'DTC' => 'DTC',^M
            'iAdvantage' => 'IAD',^M
            'Nutley' => 'NUT',^M
            'Level3' => 'LV3',^M
            'Equinix' => 'EQX',^M
            'Tata' => 'TAT',^M
            'Switch-data' => 'SWI',^M
            );^M
    ^M
        my %usage_list = (^M
            'Production' => 'PRD',^M
            'UAT' => 'UAT',^M
            'DMZ' => 'DMZ',^M
        );^M
    ^M
        sub select_list {^M
            my $counter=-1;^M
            my %hash_list = @_;^M
            my @keys = keys %hash_list;^M
    ^M
            # Clear screen^M
            print "\033[2J";^M
            print "In which country this machine is hosted or will be host and will be used ?\n\n";^M
    ^M
            # Get all keys from hash^M
            my $key;
            while ($key = each %hash_list ) {^M
                $counter++;^M
                print "$counter - $key\n";^M
            }^M
    ^M
            print "\nChoose the number corresponding to your choice :\n";^M
            my $choice_number;
            chomp ($choice_number = <STDIN>);^M
    ^M
            # Verify answer^M
            if (($choice_number =~ /\d+/) and ($choice_number <= $counter)) {^M
                # Add choice to chosen hostname^M
                my $chosen=$hash_list{$keys[$choice_number]};^M
                return $chosen;^M
            } else {^M
                print "\nYour answer is not correct, you need to enter a number between 0 and $counter\n";^M
                &hit_enter;^M
                &select_list;^M
            }^M
        }^M
    ^M
        sub srv_number {^M
            print "\033[2J";^M
            print "What is the server number ?\n";^M
            my $server_number;
            chomp ($server_number = <STDIN>);^M
            if ($server_number =~ /\d+/) {^M
                return $server_number;^M
            } else {^M
                print "\nYour answer is not correct, you need to enter a number\n";^M
                &hit_enter;^M
                &srv_number;^M
            }^M
        }^M
    ^M
        my $full_hostname = &select_list(%towns_list).'-';^M
        $full_hostname = $full_hostname.&select_list(%sites_list).'-';^M
        $full_hostname = $full_hostname.'SRV-';^M
        $full_hostname = $full_hostname.&select_list(%usage_list).'-';^M
        $full_hostname = $full_hostname.&srv_number;^M
    ^M
        sub write_hostname2tmp {^M
            open (HOSTNAME, ">/tmp/set_hostname") or warn "Couldn't write $_[0] to temp file : $!\n";^M
                print HOSTNAME "$_[0]\n";^M
            close (HOSTNAME);^M
        }^M
    ^M
        print "\033[2J";^M
        print "Is $full_hostname the correct name for this server ? (y/n)\n";^M
        if (<STDIN> =~ /y|yes/i) {^M
            &write_hostname2tmp($full_hostname);^M
        } else {^M
            print "Would you like to retry (r) or set manually the hostname (s) ? (r/s)\n";^M
            if (<STDIN> =~ /s/i) {^M
                print "Type the full required name and hit enter when finished :\n";^M
                chomp ($full_hostname = <STDIN>);^M
                &write_hostname2tmp;^M
            } else {^M
                &get_hostname;^M
            }^M
        }^M
    }^M
    ^M
    # Start configuration^M
    print "\033[2J";^M
    print "\n########################################################\n";^M
    print "#\t\t\t\t\t\t       #\n";^M
    print "#\t\t\tULLINK\t\t\t       #\n";^M
    print '#  Solaris Environnement Installation for Datacenters  #';^M
    print "\n#\t\t\t\t\t\t       #";^M
    print "\n########################################################\n\n";^M
    print "Before starting installation, you need to enter a set of informations.\n(answer to all questions, you can Ctrl+C to stop now)\n\n";^M
    &hit_enter;^M
    ^M
    &get_hostname;^Mthank for your help
    Edited by: ullink on Jun 25, 2009 6:05 AM

    Hi Manju,
    You can try the following command and check if any helps:
    Get-Exchangeserver |where-object{$_.AdminDisplayVersion -like "Version 15*"} |Get-MailboxStatistics | Ft -auto -wrap DisplayName,database,servername,*size*,*time*
    Best regards,
    Niko Cheng
    TechNet Community Support

  • Runtime.exec("Perl Script writing and reading on I/O"), handling Streams

    Hi all !!
    In a first place : sorry for my english if it's not really understandable but I try to do as good as possible !
    I'm writing a GUI with Swing that will allow (in one of my multiple tables) the user to run a Perl Script.
    This Perl Script ask the user to choose a Folder ... then read all the files in this folder and for each file (xml File), extract the datas and put them in a database. But when a file that has to be inserted in the database contains this line : <Template_Used name="ST1.mtt"> and if the Template table in my database doesn't have the "ST1.mtt" stored ... the Perl Script ask to the user to give him the path of the file "ST1.mtt" so that the script can put the "ST1.mtt template" datas in the database.
    This script runs well when it is from a windows console.
    But I need a graphic interface !!!
    So I created a JButton "Process a folder".
    When the button is pressed, a JFileChooser appears and ask the user which Folder has to be processed.
    Then a Process is created with the command : ("cmd.exe /C \"C:\\Program Files\\Fluke\\Ansur\\ProcessFolder.bat\").
    The BatFile :
    {code}cd C:\Documents and Settings\tsd\Desktop\Gael-Project\Project_Files
    perl Process.pl
    exit{code}
    At this moment everything is working well.
    But my Process.pl (which is 300 lines long ... and that you don't even want to hear about), ask in a first time the Path of the folder to process and sometimes ask the path to a file (a template file).
    So I need to read and wirte on the STDIN/STDOUT during the exec of the Process.
    In order to handle this I created two different threads : one reading the Process.getInputStream with a BufferedReader and one other writing on the Process.getOutputStream with a PrintWrinter.
    What I need to do is :
    When I read a line from the InputStream saying "I need the path of the ST1.mtt file", I should run a JFileChooser ... the user find the file in the computer ... and I write in the OutputStream the path of the file, so that my Perl Script doesn't have un Unitialised value on <STDIN> and can continue to process !!
    I'm pretty sure it's possible ... because at the moment I just used a trick :
    When the user push the "process a folder" button, I write the paths in the OutputStream before than the script needs it and it works !
    But I need to write in the OutputStream only when it is time !!!
    Any idea ??
    Here are some parts of my code :
    {code}
    String filename = File.separator+"tmp";
              JFileChooser fc = new JFileChooser(new File(filename));
              fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY );
              // Show open dialog; this method does not return until the dialog is closed
         fc.showOpenDialog(null);
         Folder = fc.getSelectedFile();
              new GoodExec(cmd);
    {code}
    {code}
    public class GoodExec {
         public static Process proc;
         public static StreamGobbler errorGobbler;
         public static StreamGobbler inputGobbler;
         public static StreamGobbler outputGobbler;
         public GoodExec(String cmd)
         try
                   Runtime rt = Runtime.getRuntime();
              proc = rt.exec(cmd);
         // any error message?
         errorGobbler = new
         StreamGobbler(proc.getErrorStream(), "ERROR");
         // any input?
         inputGobbler = new
         StreamGobbler(proc.getInputStream(), "INPUT");
         // any output?
              outputGobbler = new
              StreamGobbler(proc.getOutputStream(), "OUTPUT");
         // kick them off
         errorGobbler.start();
         inputGobbler.start();
         outputGobbler.start();
         // any error???
         int exitVal = proc.waitFor();
         System.out.println("ExitValue: " + exitVal);
         } catch (Throwable t)
         t.printStackTrace();
    {code}
    {code}
    public class StreamGobbler implements Runnable
    InputStream is;
    OutputStream os;
    String type;
    Thread thread;
    public static String chaine;
    StreamGobbler(InputStream is, String type)
    this.is = is;
    this.os=null;
    this.type = type;
    StreamGobbler(OutputStream os, String type)
    this.os = os;
    this.is=null;
    this.type = type;
    public void start () {
         thread = new Thread(this);
         thread.start ();
    public void run()
    try
    if (is == null){
         PrintWriter toProgram = new PrintWriter(os);
         File FolderToProcess = ProcessFolder.Folder;
    String Folder = FolderToProcess.getPath();
    toProgram.write(Folder);
    toProgram.close();
    else {
         if (os == null){
         InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);
    String line=null;
    String comp = "Please enter the exact path of the directory that contains the files you want to process.";
    while ( (line = br.readLine()) != null){
         if (type.equals("INPUT")){
              chaine+=line+"\n";
         if (line.equals(comp)) {
              System.out.println("give directory");RUN A JFILECHOOSER AND GIVE THE DIRECTORY TO THE OUTPUTSTREAM
    System.out.println(type + ">" + line);
    is.close ();
    catch (IOException ioe){
         ioe.printStackTrace();
    {code}
    And here is an example of a simple perl script that could be used (it s a simple one !!) :
    {code}
    #!/usr/bin/perl -w
    use strict;
    print "Please enter the exact path of the directory that contains the files you want to process.\n";
    my $dir= <STDIN>;
    chomp ($dir);
    print "titallala $dir";
    if (the template of the file is not in the database){
    print "Please give me the template so that I can put it in the database";
    $dir= <STDIN>;
    chomp ($dir);
    {code}
    Thank you for your help ... if it's possible to help me !!
    Gael

    BalusC -- The line that gives me my NullPointerException is when I call the "DisplayProduct()" method. Its a dumb question, but with NetBeans how do I find out which reference could be null? I'm not very familiar with how NetBeans works with finding out how to debug. Any help you can give me would be greatly appreciated.The IDE is com-plete-ly irrelevant. It's all about the source code.
    Do you understand anyway when and why a NullPointerException is been thrown? It is a subclass of RuntimeException and those kind of exceptions are very trival and generally indicate an design/logic/thinking fault in your code.
    SomeObject someObject = null; // The someObject reference is null.
    someObject.doSomething(); // Invoking a reference which is null would throw NPE.

  • How to call a perl script from an apple script

    Hi All,
    How to Call a perl Script from an apple script.
    Pls Give Your comments.
    Thanx & Regards,
    Esther

    Applescript to call a perl script named "/tmp/x.pl" passing an argument "world"
    do shell script "/usr/bin/perl /tmp/x.pl world"
    or if the script is given the executable atttribute (chmod +x /tmp/x.pl),
    do shell script "/tmp/x.pl world"
    Perl script "/tmp/x.pl" that prints a string using a passed argument
    #!/usr/bin/perl
    print "Hello $ARGV[$1]\n";

  • Converting Perl Scripts into Java Servlets

    Hello,
    I have just been assigned the job of converting some perl scripts into Java Servlets. The first problem i have run into is with quotes. The problem is in perl you can just print out blocks of html without worrying about the quotes. ie (name="joe"). It will be a pain if i have to delimit every quote that is in the html so that i can add it to my java string. I was just wondering if anyone knows of an easy way of accomplishing this task.
    Thanks,
    Jon

    jonhorsman said
       I have just been assigned the job of converting some perl
       scripts into Java Servlets.I was just wondering if anyone
       knows of an easy way of accomplishing this task. The easy way is to not do it - is there a business need to do this or just because someone likes java more than perl.
    But presuming there is a business need, then the easist way I can think (and certainly more interesting than doing it by hand) is to write a perl script that does it for you.

  • Under a GUI, I need to run a perl script, how to do this?

    Hi - I am writing a GUI for my clients and one of the things my program must do is run a perl script. I am able to run perl.exe but it seems like perl.exe is not running the script. I also tried to put the perl script in a batch file and then call the batch file from my java GUI program. I still get the same issue of just perl.exe running but thats not running the script. My last attempt was to write a small class to test if perl.exe can run the script under a command line. I got the perl.exe to run the perl script but how do I but implement that class in my GUI if my test class needs a command line? How can I run a command line in my GUI so the perl script can be run.
    The Runtime.getRuntime.exec(RunPerlScript) is not working like I want it.
    I also tried Runtime r = Runtime.getRuntime();
    Process p = r.exec(RunPerlScript);
    How can I run the MS-DOS prompt from my program if the Runtime Environment is running already. The Runtime Environment seems to not allow another prompt to be opened and from there I can run the perl script manually or automatically from my program.
    What does the "cmd /c start..." or "c:\\windows\\command.com..." do? I have seen that in the forum but it doesn't seem to be running the perl script. The perl.exe runs, but not the perl script. I need anyones help desperately. Damn microsoft, why did they remove completely the functionality of DOS. I have a feeling my program will run perfectly under a UNIX environment, because I needed to do was open another shell. Thats what I need in windows!
    Thank you for your help.
    Seigot

    hi
    I am working on this perl scripts do run on GUI's well the process command is fine try java 1.3 it works fine. if u need more help let me know
    all the best

  • Request - Perl script that can parse an ACE config from a VIP

    Has anyone ever written a Perl script that can take the VIP from an ACE config and parse it out into the component parts of the config, ACLs, NATs, Class-map, policy-map, etc. ?
    This seems like something someone must have written already.
    Thanks in advance!

    Any reason you dont want to use XML instead of doing just PERL ?  Its lot easier to do with XML scripts as ACE has a XML interface to query whatever is needed. So that said, you can use a perl to interface ACE via XML. Here's a simple Perl that uses LibCurl:
    #!/usr/bin/perl
    use WWW::Curl::Easy;
    my $numArgs = $#ARGV + 1;
    if ($numArgs<4)
    die("Usage: shusers.pl ip_address username password command\n");
    my $ip = @ARGV[0];
    my $uname = @ARGV[1];
    my $pwd = @ARGV[2];
    my $cmd = @ARGV[3];
    my $curl = new WWW::Curl::Easy;
    my $posturl = "http://$ip/bin/xml_agent/";
    my $xml_cmd = "xml_cmd=<$cmd/>";
    $curl->setopt(CURLOPT_HEADER, 0);
    $curl->setopt(CURLOPT_FRESH_CONNECT, 1);
    $curl->setopt(CURLOPT_URL, $posturl);
    $curl->setopt(CURLOPT_RETURNTRANSFER,1);
    $curl->setopt(CURLOPT_USERPWD,"$uname:$pwd");
    $curl->setopt(CURLOPT_POST,1);
    $curl->setopt(CURLOPT_POSTFIELDS, $xml_cmd);
    $curl->perform;
    my $info = $curl->getinfo(CURLINFO_RESPONSE_CODE);
    print $info;
    Hope this helps.
    Cheers
    V.K

  • Oracle Driver fails on PERL script

    I am trying to run a PERL script that accesses the Oracle database library. I get the following error:
    install_driver(Oracle) failed: Can't load '/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/DBD/Oracle/Oracle.so' for module DBD::Oracle: libclntsh.so.10.1: cannot open shared object file: No such file or directory at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/DynaLoader.pm line 230.
    at (eval 16) line 3
    Compilation failed in require at (eval 16) line 3.
    Perhaps a required shared library or dll isn't installed where expected
    I've looked, and the Oracle.so file is located in the path where it says it cant find it and the libclntsh.so.10.1 is located in the $ORACLE_HOME directory. The $ORACLE_HOME is set to /opt/instantclient_10_2 where the libclntsh.so.10.1 file is located, I also set $LD_LIBRARY_PATH to :/opt/instantclient_10_2 where the libclntsh.so.10.1 file is located. I can't seem to figure out why it won't work. Are there any other environment variables that need to be set? It seems to me that the Oracle driver should be found. Any insights would be greatly appreciated.
    Also, when I print the $ENV{'ORACLE_HOME'} variable in PERL, it doesn't print anything out. Could that be the problem?
    Thanks!
    Edited by: 804130 on Oct 21, 2010 8:59 AM
    Edited by: 804130 on Oct 21, 2010 9:24 AM

    It seems like it must be a problem with the $ORACLE_HOME value. I added the following line at the beginning of the script:
    print $ENV{'ORACLE_HOME'};
    and I get the following error message:
    Use of uninitialized value in print at ./get_closed_TR.pl line 17.
    The environment variable is set in my .bashrc profile and exported. It displays properly when I echo $ORACLE_HOME, but apparently the PERL script can't see it.
    Any ideas? Thanks again!

  • Perl script not rendering values

    I have a perl script that runs a form submission and sends me an email after user completes the form.
    Once I get the mail, i see the form fields BUT I do not see the values that the user would enter.
    Here is a snippet:
    print MAIL "...If Contractor, employed by: $FORM{'Contractor_Employer'}\n";
    print MAIL "...If Visitor, employed by: $FORM{'Visitor_Employer'}\n";
    print MAIL "...If Reporting unsafe condition or other safety related issue:\n";
    print MAIL "$FORM{'Unsafe_Conditions'}\n";
    print MAIL "\n";
    print MAIL "IDENTIFICATION DETAILS\n";
    print MAIL "...Full Name of Injured: $FORM{'NameInjured'}\n";
    print MAIL "...Job Title: $FORM{'JobTitle'}\n";
    print MAIL "...Date Hired: $FORM{'DateHired'}-$FORM{'DHMonth'}-$FORM{'YearHired'} \n";
    print MAIL "...Gender: $FORM{'Gender'}\n";
    print MAIL "...Manager's Name: $FORM{'Emp_Manager
    any ideas?

    My idea would be: debug it.
    Your post had so little technical information so I can't be more specific, sorry.
    [I know this isn't a Perl forum, but since isn't one on OTN, I'm OK with you asking it here]

  • Rman/PERL scripts errors

    I am trying to automate the backups and disk maintenence on a test machine using a "Host Command" in the 10g EM environment. If I run the script from the command on the target host the scripts completes successfully.
    This is the script:
    ORACLE_HOME=/u01/app/oracle/product/9.2.0
    export ORACLE_HOME
    ORACLE_SID=coeusdba.
    export ORACLE_SID
    rman <<EOF
    connect target sys<password>@coeusdba;
    connect catalog <user>/<password>@recv;
    replace script coeusdba_full_bkp { 
    allocate channel Channel1 type disk format '/u03/orabkp/coeusdba/b_%u_%p_%c';
    backup
    ( database include current controlfile );
    backup ( archivelog all delete input );
    run { execute script coeusdba_full_bkp;}
    EOF
    /u01/app/oracle/product/9.2.0/dbs/scripts/coeusdba_new.sh
    exit
    When I execute the same script from a 10g EM "Host Command" job the script fails at the PERL command step with the following output:
    Recovery Manager: Release 9.2.0.7.0 - Production
    Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
    RMAN>
    RMAN>
    connected to target database: COEUSDBA (DBID=1916078485)
    RMAN>
    RMAN>
    connected to recovery catalog database
    RMAN> 2> 3> 4> 5> 6> 7> 8>
    replaced script coeusdba_full_bkp
    RMAN>
    RMAN>
    executing script: coeusdba_full_bkp
    allocated channel: Channel1
    channel Channel1: sid=10 devtype=DISK
    Starting backup at NOV-01-2005 10:32:32
    channel Channel1: starting full datafile backupset
    channel Channel1: specifying datafile(s) in backupset
    including current controlfile in backupset
    input datafile fno=00006 name=/u02/oradata/coeusdba/users01.dbf
    input datafile fno=00002 name=/u03/oradata/coeusdba/undotbs01.dbf
    input datafile fno=00004 name=/u03/oradata/coeusdba/index01.dbf
    input datafile fno=00005 name=/u03/oradata/coeusdba/tools01.dbf
    input datafile fno=00007 name=/u03/oradata/coeusdba/xdb01.dbf
    input datafile fno=00001 name=/u02/oradata/coeusdba/system01.dbf
    input datafile fno=00003 name=/u02/oradata/coeusdba/drsys01.dbf
    channel Channel1: starting piece 1 at NOV-01-2005 10:32:33
    channel Channel1: finished piece 1 at NOV-01-2005 10:33:28
    piece handle=/u03/orabkp/coeusdba/b_3rh2l4q1_1_1 comment=NONE
    channel Channel1: backup set complete, elapsed time: 00:00:55
    Finished backup at NOV-01-2005 10:33:28
    Starting backup at NOV-01-2005 10:33:29
    current log archived
    channel Channel1: starting archive log backupset
    channel Channel1: specifying archive log(s) in backup set
    input archive log thread=1 sequence=49 recid=200 stamp=573215609
    channel Channel1: starting piece 1 at NOV-01-2005 10:33:32
    channel Channel1: finished piece 1 at NOV-01-2005 10:33:33
    piece handle=/u03/orabkp/coeusdba/b_3sh2l4rr_1_1 comment=NONE
    channel Channel1: backup set complete, elapsed time: 00:00:02
    channel Channel1: deleting archive log(s)
    archive log filename=/u04/arch/coeusdba/1_49.dbf recid=200 stamp=573215609
    Finished backup at NOV-01-2005 10:33:35
    Starting Control File and SPFILE Autobackup at NOV-01-2005 10:33:35
    piece handle=/u04/orabkp/coeusdba/ctl_file_bkps/c-1916078485-20051101-00 comment=NONE
    Finished Control File and SPFILE Autobackup at NOV-01-2005 10:33:38
    released channel: Channel1
    RMAN>
    RMAN>
    Recovery Manager complete.
    syntax error at /u01/app/oracle/product/9.2.0/EM10g_1/perl/lib/5.6.1/warnings.pm line 306, near "{^"
    syntax error at /u01/app/oracle/product/9.2.0/EM10g_1/perl/lib/5.6.1/warnings.pm line 311, near "{^"
    BEGIN failed--compilation aborted at /u01/app/oracle/product/9.2.0/EM10g_1/perl/lib/5.6.1/English.pm line 38.
    BEGIN failed--compilation aborted at /u01/app/oracle/product/9.2.0/dbs/scripts/rmanc.pl line 20
    Is anyone having this problem in 10g and if so , can you provide me with some insight with respect to resolution?

    The .sh script calls a perl script that parses the output of the report obsolete command in rman and deletes the obsolete datasets from disk. This shell completes from the command line with no errors. Here is the .sh and the perl script. Like I said the odd thing is that this shell executes successfully from the command line. Thanks for your interest in looking at this.
    cat coeusdba_new.sh
    /u01/app/oracle/product/9.2.0/dbs/scripts/rmanc.pl target sys/<password>@coeusdba catalog rmantest/<password>@recv redundancy 2
    rmanc.$ cat rmanc.pl
    #!/usr/bin/perl -w
    # NAME
    # rmanc.pl - delete obsolete backups and copies
    # DESCRIPTION
    # This perl script automates deletion of obsolete datafilecopies and
    # backup pieces. It uses perl strin manipulation to process the output of the RMAN
    # "report obsolete" command and creates rm commands to delete the files
    # NOTES
    # Some customization is necessary.
    # Adapted from Oracle 8i rman1.sh Unix shell script.
    # benmalek 03/08/2003 - Modified to delete backup sets and datafilecopies only
    # Does not touch backup records.
    use strict;
    #use English;
    #$ENV{ORACLE_OWNER}='oracle';
    #$ENV{ORACLE_HOME}='/disk01/app/oracle/product/9.2.0';
    $ENV{NLS_DATE_FORMAT}='DD-MON-YYYY:HH24:MI:SS';
    &PrintEnv;
    sub Usage {
    my ($arg1, @arg2) = @_;
    my $base_name = `basename $0`;
    chop($base_name);
    CASE: {
    if (!defined($arg1)) {last CASE; }
    if ($arg1 =~ /\S/) {print ("\nUnknown argument or incorrect value for: $arg1\n\n"); last CASE; }
    my $example1 = 'rmanc.pl target sys/orclpass@orcl catalog rman/rmanpass@rec redundancy 5';
    my $example2 = 'rmanc.pl target sys/orclpass@orcl nocatalog redundancy 5';
    my $usage_txt =
    " Usage: $base_name [option] ...
    option: [target CNCTSTR] [catalog CNCTSTR | nocatalog] [params 'PARMS'] [redundancy NUMBER]
    Option Description
    target CNCTSTR Connect to the target db using CNCTSTR.
    catalog CNCTSTR Connect to catalog db using CNCTSTR.
    nocatalog Don't use a recovery catalog.
    parms 'PARMS' Use PARMS string for SBT_TAPE maintenance channel.
    You can use single or double quotes depending on
    your needs. In the rman script, single-quotes
    will be used.
    redundancy NUMBER Set redundancy of backups to NUMBER.
    The catalog or nocatalog option must be specified. All others are optional
    The target option must also be specified
    Examples:
    $example1
    $example2 ";
    print ("$usage_txt \n");
    die "Exiting subroutine 'Usage'.\n";
    # Initialize default connect string variables:
    my $target=""; # force user to supply target option
    my $catalog=""; # force user to supply catalog option;
    my $parms="";
    my $redun=""; # force user to supply redundancy option;
    # process target and catalog arguments
    my $args = @ARGV;
    while ( $args > 0 ) {
    ARGS: {
    if (($ARGV[0] eq "target") && defined($ARGV[1]))
    {$target="$ARGV[0] $ARGV[1]"; shift(@ARGV); last ARGS;}
    if (($ARGV[0] eq "catalog" || $ARGV[0] eq "rcvcat") && defined($ARGV[1]))
    { $catalog="$ARGV[0] $ARGV[1]"; shift(@ARGV); last ARGS;}
    if ($ARGV[0] eq "nocatalog") { $catalog="$ARGV[0]"; last ARGS;}
    if (($ARGV[0] eq "parms") && defined($ARGV[1])) { $parms = "$ARGV[0] $ARGV[1]"; shift(@ARGV); last ARGS;}
    if (($ARGV[0] eq "redundancy") && defined($ARGV[1]) && !($ARGV[1] =~ /\D/))
    {$redun=$ARGV[1]; shift(@ARGV); last ARGS;}
    &Usage($ARGV[0]);
    shift(@ARGV);
    $args= @ARGV;
    if ((!defined($catalog) || $catalog eq "") || (!defined($target) || $target eq "") || (!defined($redun) || $redun eq "" )) {&Usage;}
    #print (" target=$target \n catalog=$catalog \n parms=$parms \n redundancy=$redun\n");
    # Get a list of obsolete disk files to delete:
    my @rman_out=`rman $target $catalog << EOF
    report obsolete redundancy=$redun device type disk;
    exit;
    EOF`;
    # debug
    print ("############################################\n");
    print ("Output of REPORT OBSOLETE REDUNDANCY=$redun\n");
    print @rman_out;
    print ("############################################\n");
    #my $command = `rman $target $catalog << EOF
    # report obsolete redundancy=$redun device type disk;
    # exit;
    # EOF"
    #open (RMAN, "$command |" );
    #my @rman_out=<RMAN>;
    # Extract the names of the obsolete files to delete
    my $line;
    my @files;
    my @dates;
    my @pieces;
    foreach $line (@rman_out) {
    if (($line =~ /Backup Piece/) && ($line =~ /\S/)) {
    my @fields=split (/\s+/, $line);
    my $nelem=@fields;
    push(@pieces, $fields[$nelem-3]);
    push(@dates, $fields[$nelem-2]);
    push(@files, $fields[$nelem-1]);
    # Verify files exists
    my $i=0;
    foreach $line (@files) {
    if (-e $line) {
    print ("Deleting backup piece or file copy: $pieces[$i] $dates[$i] $line\n");
    system("rm $line");
    } else {
    # print ("file $line does not exist. \n");
    $i = $i + 1;
    sub PrintEnv{
    my $var;
    foreach $var (sort keys %ENV) {
    print "$var: \"$ENV{$var}\".\n"
    pl

  • Help! I want a perl script for test

    I am not familar with perl and XMLDB.
    The database which managed by other team report the following errors.
    They said the error was caused by the perl scipt which contents a statment using XML object.
    So I want a perl script for test.
    Please help me.
    oracle 9.2.0.3.0
    Alert.log
    ORA-00600: internal error code, arguments: [qmxarElemAt2], [0], [], [], [], [], [], []
    listener.log
    connect_data=(sid=###)(cid=(PROGRAM=perl@###)(USER=oracle)))*(ADDRESS=(PROTOcol=tcp)(host=)
    establish###
    Edited by: 964446 on Oct 10, 2012 6:10 AM

    I can't check on iTunes until tomorrow morning, but in the meantime I can tell you what's wrong with your original feed. The top two lines read
    <?xml version="1.0"?>
    <rss version="2.0">
    They should read
    <?xml version="1.0" encoding="UTF-8"?>
    <rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
    Without the itunes URL in the second line iTunes cannot parse the required tags to show your episodes. I would guess that the line was there originally but got removed, after which iTunes would not recognize new episodes. Put it back and reload the feed, and it should work if iTunes hasn't terminated your podcast in the meantime.
    But to answer your original question: assuming you have access to both feeds; copy everything in the original feed from the first <item> to the last </item> near the bottom.
    In the new feed, find the last </item> tag at the bottom (just above the </channel> and </rss> tags), start a new line just after it and insert the material you posted from the original feed (though there are an awful lot of episodes there, and though it's technically not a problem you might want to consider whether you really need all of them in the feed).
    If you don't have direct access to the feeds but are using one of the podcast creation services which don't allow this, you will have to follow whatever method they provide for adding the episodes, possibly one at a time.

  • Creating a Perl script for SAP sytem profile parameter

    Hi,
    I need to create a perl script for all th eprofile parameter to check as a security directive ,so that whenever the system is started it checks for this profile parameter.
    As per my company sap directive ,these are the profile parameter i need to set.
    Can anyone let me know how to write the scripts.
    login/min_password_lng Minimum password length for user password 320 Min.
    8
    login/password_expiration_t
    ime
    Number of days between forced password change. 0 Max.
    35
    login/fails_to_session_end Number of invalid logon attempts allowed before the
    SAP GUI is disconnected.
    3 Max.
    3
    login/fails_to_user_lock Number of invalid logon attempts before the user id is
    automatically locked by the system.
    12 Max.
    6
    rdisp/gui_auto_logout Time, in seconds, that SAPGUI is automatically disconnected
    because of in-activity.
    0 60-
    7200
    21
    auth/test_mode Jump into report RSUSR400 at every authority check N N22
    auth/system_access_check_
    off
    Switch off automatic authority check for special ABAP
    commands
    0 0
    auth/no_check_in_some_ca
    ses
    Special authorization checks turned off by customer.
    Enabling of Profile Generator
    N/Y23 Y
    login/ext_security Security access controlled by external software. N N24
    auth/rfc_authority_check Permission for remote function calls from within ABAP
    programs
    0 1
    login/failed_user_auto_unlo
    ck
    Enable system function for automatic unlock of users
    at midnight. (0 = locks remain)
    0 0
    login/
    no_automatic_user_sapstar
    (as of 3.1h)
    login/no_automatic_user_sa
    p* (prior to 3.1h)
    Disable ability to logon as SAP* with PASS as password
    when SAP* deleted.
    0 125,26
    auth/tcodes_not_checked TCode checking for SU53 & SU56 analysis disabled (empty
    "SU5
    3
    Regards,
    Chetan.

    Here's a simple perl script that should help you get what it is you're looking for - you can add all the parameters you want to search for, I just took a few of them:
    #!/usr/bin/perl -w
    use strict;
    use sapnwrfc;
    SAPNW::Rfc->load_config;
    my $rfc = SAPNW::Rfc->rfc_connect;
    my @parms = (   "login/min_password_lng",
              "login/password_expiration_time",
              "login/fails_to_session_end",
              "login/fails_to_user_lock" );
    for my $x (0 .. $#parms) {
         my $rcc = $rfc->function_lookup("SXPG_PROFILE_PARAMETER_GET");
         my $slr = $rcc->create_function_call;
         $slr->PARAMETER_NAME($parms[$x]);
         $slr->invoke;
         print "Value for $parms[$x] is: ".$slr->PARAMETER_VALUE."\n";
    $rfc->disconnect();
    And running it, you'll get:
    [dhull@397 scripts]$ ./read-profile.pl
    Value for login/min_password_lng is: 7
    Value for login/password_expiration_time is: 90
    Value for login/fails_to_session_end is: 3
    Value for login/fails_to_user_lock is: 6
    [dhull@397 scripts]$
    If you need to get your perl environment read to make RFC calls to your SAP system, check my series of blogs on how to do so here:
    https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/u/251752730
    Cheers,
    David.

  • [solved] Perl script for pacman updates in Conky

    Hi
    I've been using this script in Perl Conky to check on updates. It works well.
    It's not mine - I got it here;
    http://bbs.archlinux.org/viewtopic.php?id=57291
    #!/usr/bin/perl
    ## script by Xyne
    ## http://bbs.archlinux.org/viewtopic.php?id=57291
    use strict;
    use warnings;
    my $n = (`pacman -Qu | wc -l`);
    chomp ($n);
    if ($n == 0)
    print "System up to date"
    elsif($n == 1)
    print "1 new package"
    else
    print "$n new packages (inc. IgnorePkg) "
    I have some packages listed in IgnorePkg in pacman.conf - is there a way to exclude them from the packages counted in $n?
    I thought something like this would help but I don't see how to take only part of a line from IgnorePkg
    http://www.perlfect.com/articles/perlfile.shtml
    Thanks for any help
    EDIT I added a --ignore clause to the pacman query. Seems to have worked. Sorry to waste your time.
    Last edited by Bazzaah (2012-07-04 09:25:46)

    bump...
    Edit: Finally figured it out. My router assigns IP adresses dynamically on each reboot. When my IP adress changed from 192.169.1.2 to 192.168.1.3 the hellaconk script got all confused. Ahh...
    Last edited by Perre (2009-03-12 18:59:40)

Maybe you are looking for

  • JDBC Adapter: J2EE server crashes while sending large messages

    We want to use the following scenario to transfer data from a MS SQL Server to SAP BW via XI: JDBC Sender Adapter – XI – SAP ABAP Proxy. All works fine with a small amount of data. But if the select statement delivers too many record sets and the siz

  • Sql*loader in form9i

    dear all, how to call sql*loader from form9i? any one can help me... thx

  • Windows 7 home Premium OEM - download

    Hello I wish to know if there is a way to download Windows 7 Home Premium OEM to a Notebook ThinkPad Y 570. (What I done before) I try ti recover the O.S. with One Key Recover and does not work. Then I downloaded Windows 7 Home Premium ISO installer

  • Adjusting Motion Template Media in Drop Zones in FCP

    The Motion User's manual claims that you can adjust certain parameters of Drop Zone media in templates in FCP. I'll go to the template's Control tab in the Viewer and there are no options and I do not get a red cross-hair in the Canvas as t says I sh

  • How can i turn off internet access for itunes

    Every time i turn on itunes it asks for my internet username and password. If I cancel the request it pops up again after a few seconds and will continue to pop up, even if I put my name and password in. This becomes very frustrating when I don't wan