HI All, I had a script which was using Oraperl and Perl v-5.003. I did upgrade the perl to 5.6.1 on Solaris 8 sparc. I was getting Oraperl error and I learnt that I should use DBI not Oraperl. I installed the DBD and DBI and want to change this script. Currently I am getting this error. Global symbol "$ora_errstr" requires explicit package name at /var/commerce/gateway.pl line 370. Global symbol "$ora_errstr" requires explicit package name at /var/commerce/gateway.pl line 380. Global symbol "$ora_errstr" requires explicit package name at /var/commerce/gateway.pl line 390. Execution of /var/commerce/gateway.pl aborted due to compilation errors. Script is attached here ( If you don't get attachement, let me know, I'll send you personal email). Can you help me to identify what I need to change to make it compatible with "use DBI" .. or can I use Oraperl with perl 5.6.1. Thanks, Sanjeev
#!/bin/perl -w use lib '/u01/orap/pora/8.0.6/lib/'; #use lib '/usr/apps/FreeWare/Perl-5.03/lib/perl5/'; #use lib '/usr/apps/FreeWare/perl5.005/lib/5.00502'; use lib '/usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris'; use lib '/usr/local/lib/perl5'; use lib '/var/commerce/organic/lib/'; use strict; use IPC::Open3; use Organic::Mail; use Symbol; #use Oraperl; use DBI; $ENV{'ORACLE_HOME'} = '/u01/orap/pora/8.0.6'; $ENV{'TNS_ADMIN'} = '/u01/orap/pora/8.0.6/network/admin'; #$ENV{'TWO_TASK'} = 'P'; my %ora_parms = (); # Originals ... (i.e. live) # Change these 3 emails below from [EMAIL PROTECTED] to # whoever you want to receive the emails everytime this # thing runs ... Z.K my $web_sales_email = '[EMAIL PROTECTED]'; my $order_email = '[EMAIL PROTECTED],[EMAIL PROTECTED],[EMAIL PROTECTED],[EMAIL PROTECTED]'; my $bounce_email = $order_email; my $debugger = '[EMAIL PROTECTED],[EMAIL PROTECTED]'; my $DEBUG = 0; my $db_login = "P.gunu.org"; # Begin main program # Read in the encrypted message from stdin my $encrypted_text = ""; while (<STDIN>) { $encrypted_text .= $_; } # Run it through the decryptor my ($plaintext,$plaintext_no_cc) = decrypt($encrypted_text); ## grep through $plaintext here to find out what the product is and distribute the ## mail to [EMAIL PROTECTED] if appropriate. # Forward it on to its intended recipient my $mail = new Organic::Mail; my ($to, $bounce); if ($DEBUG or $plaintext =~ /ignore this message/ ) { $to = $debugger; $bounce = $debugger; $db_login = "PCAFE"; } else { $to = $order_email; $bounce = $bounce_email; } #First send with CC info $mail->to($to); $mail->from($web_sales_email); $mail->replyto($bounce); $mail->subject("Incoming order"); $mail->message($plaintext_no_cc); $mail->send; # Just for testing, to see the un-encrypted order #chmod 0755, "/tmp/plain.txt"; #open(TMP, ">>/tmp/plain.txt"); #print TMP '=' x 65, "\n"; #print TMP $plaintext_no_cc, "\n"; #close(TMP); #Now send without CC info if ($DEBUG or $plaintext_no_cc =~ /ignore this message/ ) { $to = $debugger; $bounce = $debugger; } else { $to = $web_sales_email; $bounce = $bounce_email; } $mail->clear_to(); $mail->clear_from(); $mail->clear_replyto(); $mail->clear_subject(); $mail->clear_message(); $mail->to($to); $mail->from($web_sales_email); $mail->replyto($bounce); $mail->subject("Incoming order"); $mail->message($plaintext_no_cc); $mail->send; # ============================================================ # Testing the test environment .... Z.K 7/6/00 # Commented out the Oracle inserts just for safety. # Don't need to go past here at all for my tests... # ============================================================ my $index = 1; $ora_parms{line_number} = 1; while($index<=$ora_parms{no_of_products}) { $ora_parms{option_number} = 0; $ora_parms{quantity}= $ora_parms{'quantity'.$index} ; if($ora_parms{'product_numbers'.$index}) { my $line_item = "" ; my @line_items = split /,/,$ora_parms{'product_numbers'.$index}; foreach $line_item (@line_items) { my ($part_num,$part_price) = split /\*/,$line_item; $part_num =~ s/^\s+//; $part_price =~ s/^\s+//; $ora_parms{product_number} = $part_num; $ora_parms{product_price} = $part_price; $ora_parms{platform} = $ora_parms{'platform'.$index} ; $ora_parms{which_product} = $ora_parms{'which_product'.$index} ; $ora_parms{media_type} = $ora_parms{'media_type'.$index} ; # testing env .. no inserts &do_oracle_insert(); $ora_parms{option_number}++; } $ora_parms{line_number}++; } else { # testing env .. no inserts &do_oracle_insert(); } $index++; } 1; # # decrypt # # takes one parameter, which is the encrypted text to be decrypted # sub decrypt { my $encrypted_text = shift; #my $encrypted_text = $plaintext; my $plaintext_sub = ""; #my $plaintext_sans_cc is plaint text message minus Credit Card Info my $plaintext_sans_cc = ""; # PGP might barf -- if so, we want to know about it! my $error_text = ""; # the directory where the PGP 5.0 binaries live my $pgp_directory = "/var/commerce/pgp/bin"; # the ID for the private key to use for signing my $pgp_user = '[EMAIL PROTECTED]'; # the ID for the public key to use for encrypting my $pgp_recipient = '[EMAIL PROTECTED]'; # the location of the public keyring my $pgp_pubring = '/.pgp/pubring.pkr'; # the location of the secret keyring my $pgp_secring = '/.pgp/secring.skr'; # the password used to encrypt the secret keys my $password = "p0intyha1r"; $ENV{'PGPPASSFD'} = '0'; my $PGPWRITE = gensym(); my $PGPREAD = gensym(); my $PGPERR = gensym(); my $pid = open3($PGPWRITE, $PGPREAD, $PGPERR, "$pgp_directory/pgpv -f --pubring=$pgp_pubring --secring=$pgp_secring +batchmode=1") or die "Unable to invoke PGP."; print $PGPWRITE "$password\n"; print $PGPWRITE $encrypted_text; close $PGPWRITE; my ($ora_field,$ora_value); while (<$PGPREAD>) { #We need to store the fields as key/value pairs for insertion in the oracle database #We split each line the equal ($ora_field,$ora_value) = split /\=/,$_,2; chomp $ora_value; $ora_parms{$ora_field} = $ora_value; $ora_parms{$ora_field} =~ s/\'//g; # do nothing, just slurp in the text $plaintext_sub .= $_; #strip the Credit Card Information if($_ !~ /credit_card_type/o and $_ !~ /credit_card_number/o and $_ !~ /credit_card_expire/o and $_ !~ /name_on_card/o) { $plaintext_sans_cc .= $_; } } $error_text .= <$PGPERR>; # oh no! Errors! # ...too bad we're going to ignore them # die "PGP errors: $error_text" if $error_text; return ($plaintext_sub, $plaintext_sans_cc); } # encrypt sub do_oracle_insert { #Hack...... if($ora_parms{billing_country} eq "CA") { $ora_parms{billing_province} = $ora_parms{billing_state}; $ora_parms{shipping_province} = $ora_parms{shipping_state}; $ora_parms{billing_state} = ""; $ora_parms{shipping_state} = ""; } else { $ora_parms{billing_province} = ""; $ora_parms{shipping_province} = ""; } #my $lda = &ora_login($db_login, "web", "web") || &dberror("ora_login($db_login, WEB)"); my $lda = &ora_login("P", "web", "homer") || &dberror("ora_login($db_login, WEB)"); my $insert = ""; $insert = "insert into rs_web_order ( order_id, platform, billing_label, billing_first_name, billing_middle_initial, billing_last_name, billing_company, billing_title, billing_street_address, billing_address2, billing_address3, billing_city, billing_state, billing_province, billing_zip_code, billing_country, billing_day_phone, billing_eve_phone, billing_fax_number, billing_email, shipping_label, shipping_first_name, shipping_middle_initial, shipping_last_name, shipping_company, shipping_title, shipping_street_address, shipping_address2, shipping_address3, shipping_city, shipping_state, shipping_province, shipping_zip_code, shipping_country, shipping_day_phone, shipping_eve_phone, shipping_fax_number, shipping_email, credit_card_type, credit_card_number, credit_card_expiry, credit_card_holder_name, shipping_option, quantity, rational_customer, where_heard, line_number, option_number, item, price, media_type, process_flag, creation_date, ship_method_code, type_of_order, shipping_instructions ) VALUES ( \'$ora_parms{order_id}\', \'$ora_parms{platform}\', \'$ora_parms{billing_label}\', \'$ora_parms{billing_first_name}\', \'$ora_parms{billing_middle_initial}\', \'$ora_parms{billing_last_name}\', \'$ora_parms{billing_company}\', \'$ora_parms{billing_title}\', \'$ora_parms{billing_street_address}\', \'$ora_parms{billing_street_address2}\', \'$ora_parms{billing_street_address3}\', \'$ora_parms{billing_city}\', \'$ora_parms{billing_state}\', \'$ora_parms{billing_province}\', \'$ora_parms{billing_zip_code}\', \'$ora_parms{billing_country}\', \'$ora_parms{billing_day_phone_number}\', \'$ora_parms{billing_eve_phone_number}\', \'$ora_parms{billing_fax_number}\', \'$ora_parms{billing_email_address}\', \'$ora_parms{shipping_label}\', \'$ora_parms{shipping_first_name}\', \'$ora_parms{shipping_middle_initial}\', \'$ora_parms{shipping_last_name}\', \'$ora_parms{shipping_company}\', \'$ora_parms{shipping_title}\', \'$ora_parms{shipping_street_address}\', \'$ora_parms{shipping_street_address2}\', \'$ora_parms{shipping_street_address3}\', \'$ora_parms{shipping_city}\', \'$ora_parms{shipping_state}\', \'$ora_parms{shipping_province}\', \'$ora_parms{shipping_zip_code}\', \'$ora_parms{shipping_country}\', \'$ora_parms{shipping_day_phone_number}\', \'$ora_parms{shipping_eve_phone_number}\', \'$ora_parms{shipping_fax_number}\', \'$ora_parms{shipping_email_address}\', \'$ora_parms{credit_card_type}\', \'$ora_parms{credit_card_number}\', \'$ora_parms{credit_card_expires}\', \'$ora_parms{name_on_card}\', \'$ora_parms{shipping_option}\', $ora_parms{quantity}, \'$ora_parms{rational_customer}\', \'$ora_parms{where_heard}\', $ora_parms{line_number}, $ora_parms{option_number}, \'$ora_parms{product_number}\', $ora_parms{product_price}, \'$ora_parms{media_type}\', \'N\', SYSDATE, \'$ora_parms{shipping_code}\', \'$ora_parms{type_of_order}\', \'$ora_parms{shipping_instructions}\' )"; &ora_do($lda,$insert) || die "(($ora_errstr))\n"; #&dberror("&ora_do($lda,$insert)"); &ora_logoff($lda); } sub dberror { my ($message) = @_; print "*Error: $message\n"; print "Database error: $ora_errstr\n"; my $db_error_mail = new Organic::Mail; $db_error_mail->to('[EMAIL PROTECTED]'); $db_error_mail->from('gateway@adm-erpdb'); $db_error_mail->replyto('[EMAIL PROTECTED]'); $db_error_mail->subject("Error in E-Commerce"); $db_error_mail->message("$message\n\n$ora_errstr"); $db_error_mail->send; exit 1; } # dberror
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]