Database Programming with Perl

Total Page:16

File Type:pdf, Size:1020Kb

Database Programming with Perl Database Programming with Perl #!/usr/bin/perl use strict; print "\nSaid the Llama to the Lama:\n"; my (@Llama, %answers, @llama, @questions) = map{ print;$_ }(<>); die "seeking a llama to share pipe!\n" unless $Llama[0]=~/Find/; print "\nSaid the Lama to the Llama:\n"; my$karma=0 ;for ( @Llama ){chomp; ; chomp; s/Fi/Fou/;s/−/−−/; ;/ /; my ( $lama, $llama ) = ($‘,$’); s/ //g for( $lama , $llama); $|=0;push @questions,$llama unless $llama=~ /^$/ ; push @llama,# $lama unless $lama=~ /^$/} %answers = map { $_ , 0, scalar reverse( split // ) ,0 }@questions;my @karma=llama( @llama);my @dharma = llama(map { ( ’ ’) x $_ . $llama[$_]. (’ ’) x (1* $#llama −$_)}(0..$#llama)); my @lama=map{$a = $_;;;;; s/( *)(\w+)( *)/$3$2$1/; $a}@dharma; my %find = (lama => \@llama,dharma =>\@karma,karma =>\@dharma ,llama=> \@lama); sub llama{map{$|++; my $grazing= $_ ;join( ’’, map{ ( split //,$_[ $_ ]) [$grazing] } (0..$#_ ))}(0.. ( length($_[0])−1))}sub dharma{my @llama = @{$_[0]} ;[map{s/[a−z]/\*/g;; ; $_}@llama ] };; my %llama= map{$_,dharma($find{$_}) } ( keys %find );; sub karma { my $reasons=shift ;; ; ; my @answers = @{ $find{ "$reasons" } };; for my $questions (keys%answers){next if $answers{ $questions }; study $questions;for (0.. $#answers ) { if ( $answers[ $_]=~/$questions/){my($soul ,$seeks , $to_know )=($‘,$’ ,$&) ;s/\w/\*/g for ($seeks, $to_know, $soul);$llama{ $reasons} −>[$_]=$soul . $questions .$seeks;$karma ++;$answers{ $questions} ++ ; $answers{ reverse( split//,$to_know)}++ }}}};for(keys %find){ karma($_ )};my@dali =map{$a= $_;$a=~s/./\*/g;$a} (@llama); for my $karma(keys %llama){ $llama {$karma}=[ llama( @{$llama{$karma}})] if $karma=~/.{5}/ ;for(0 .. $#{$llama{$karma}}){ $llama{$karma}−>[$_] =~s/ //g;my@Lama =split//, $dali[$_];my @lAma= split//,$llama{$karma}−>[$_];$dali[$_]= join(’’,map{($lAma[$_] ne ’*’) ? $lAma[$_]:$Lama[$_]}(0..$#lAma));}}my @answer=map { s/(.)/$1 /g ;s/\*/ /g; ($_,’ ’x(length($_)))}(@dali);my($llama,$lama)=sort($#questions, $#answer) ; for (0..$lama) {print $answer[$_]," ",$questions[$_],"\n" } Jacinta Richardson Paul Fenwick Database Programming with Perl by Jacinta Richardson and Paul Fenwick Copyright © 2005-2008 Jacinta Richardson Copyright © 2005-2008 Paul Fenwick Copyright © 2005-2008 Perl Training Australia Cover artwork Copyright(c) 2001 by Frank Booth. Used with permission. Conventions used throughout this text are based upon the conventions used in the Netizen training manuals by Kirrily Robert, and found at http://sourceforge.net/projects/spork Distribution of this work is prohibited unless prior permission is obtained from the copyright holder. This training manual is maintained by Perl Training Australia. Information about Perl Training Australia’s courses, manuals and course extracts can be found at http://www.perltraining.com.au/. This is revision 1.8 of the Perl Training Australia’s "Database Programming with Perl" training manual. Table of Contents 1. About Perl Training Australia....................................................................................................... 1 Training....................................................................................................................................... 1 Consulting ................................................................................................................................... 1 Contact us.................................................................................................................................... 1 2. Introduction..................................................................................................................................... 3 Course outline ............................................................................................................................. 3 Assumed knowledge ................................................................................................................... 3 Module objectives ....................................................................................................................... 3 Platform and version details........................................................................................................ 3 The course notes.......................................................................................................................... 4 Other materials............................................................................................................................ 4 3. Our database................................................................................................................................... 7 Database schema......................................................................................................................... 7 4. Accessing the database ................................................................................................................... 9 In this chapter.............................................................................................................................. 9 Our training database .................................................................................................................. 9 The MySQL shell........................................................................................................................ 9 MySQL commands..........................................................................................................10 Exercises ...................................................................................................................................10 Accessing the database from Perl .............................................................................................11 Using the database shell directly .....................................................................................11 Using a database specific module....................................................................................11 SQL injection attacks.............................................................................................12 Group Exercises.....................................................................................................13 Using DBI and derivatives...............................................................................................13 Introduction to DBI...................................................................................................................13 What is DBI? ...................................................................................................................14 Supported databases...............................................................................................14 Why use DBI? .................................................................................................................15 Chapter summary ......................................................................................................................15 5. Programming with the DBI .........................................................................................................17 In this chapter............................................................................................................................17 Establishing a database connection...........................................................................................17 Testing that the connection worked.................................................................................18 Exercise..................................................................................................................19 Testing the connection later.............................................................................................19 Simple connection flags...................................................................................................19 DELETE, INSERT, UPDATE ............................................................................................................20 Exercises..........................................................................................................................21 Inserting, updating, deleting based on external input......................................................21 Placeholders and bind values .................................................................................22 Prepare and execute...................................................................................................................22 prepare.............................................................................................................................23 execute.............................................................................................................................23 dump_results....................................................................................................................24 Exercise ...........................................................................................................................24 do vs prepare ..................................................................................................................24 Statement handles............................................................................................................24 Perl Training Australia (http://perltraining.com.au/) iii Fetching data.............................................................................................................................25 How many rows? .............................................................................................................25
Recommended publications
  • Learning to Program in Perl
    Learning to Program in Perl by Graham J Ellis Languages of the Web Learning to Program in Perl version 1.7 Written by Graham Ellis [email protected] Design by Lisa Ellis Well House Consultants, Ltd. 404, The Spa, Melksham, Wiltshire SN12 6QL England +44 (0) 1225 708 225 (phone) +44 (0) 1225 707 126 (fax) Find us on the World Wide Web at: http://www.wellho.net Or contact us at: [email protected] Copyright © 2003 by Well House Consultants, Ltd. Printed in Great Britain. Printing History May 1999 1.0 First Edition February 2000 1.1 Minor additions June 2000 1.2 Compliation of modules October 2000 1.3 Name change, revisions April 2002 1.4 Added modules September 2002 1.5 Added modules January 2003 1.6 Updated modules February 2003 1.7 Updated modules This manual was printed on 21 May 2003. Notice of Rights All rights reserved. No part of this manual, including interior design, may be reproduced or translated into any language in any form, or transmitted in any form or by any means electronic, mechanical, photocopying, recording or otherwise, without prior written permission of Well House Consultants except in the case of brief quotations embodied in critical articles and reviews. For more information on getting permission for reprints and excerpts, contact Graham Ellis at Well House Consultants. This manual is subject to the condition that it shall not, by way of trade or otherwise, be lent, sold, hired out or otherwise circulated without the publisher's prior consent, incomplete nor in any form of binding or cover other than in which it is published and without a similar condition including this condition being imposed on the subsequent receiver.
    [Show full text]
  • How to Secure Your Web Site Picked up SQL Injection and Cross-Site Scripting As Sample Cases of Failure Because These Two Are the Two Most Reported Vulnerabilities
    How to Secure your Website rd 3 Edition Approaches to Improve Web Application and Web Site Security June 2008 IT SECURITY CENTER (ISEC) INFORMATION-TECHNOLOGY PROMOTION AGENCY, JAPAN This document is a translation of the original Japanese edition. Please be advises that most of the references referred in this book are offered in Japanese only. Both English and Japanese edition are available for download at: http://www.ipa.go.jp/security/english/third.html (English web page) http://www.ipa.go.jp/security/vuln/websecurity.html (Japanese web page) Translated by Hiroko Okashita (IPA), June 11 2008 Contents Contents ......................................................................................................................................... 1 Preface ........................................................................................................................................... 2 Organization of This Book ........................................................................................................... 3 Intended Reader ......................................................................................................................... 3 Fixing Vulnerabilities – Fundamental Solution and Mitigation Measure - .................................... 3 1. Web Application Security Implementation ............................................................................... 5 1.1 SQL Injection .................................................................................................................... 6 1.2
    [Show full text]
  • Red Hat Enterprise Linux 8 Installing, Managing, and Removing User-Space Components
    Red Hat Enterprise Linux 8 Installing, managing, and removing user-space components An introduction to AppStream and BaseOS in Red Hat Enterprise Linux 8 Last Updated: 2021-06-25 Red Hat Enterprise Linux 8 Installing, managing, and removing user-space components An introduction to AppStream and BaseOS in Red Hat Enterprise Linux 8 Legal Notice Copyright © 2021 Red Hat, Inc. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/ . In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. Linux ® is the registered trademark of Linus Torvalds in the United States and other countries. Java ® is a registered trademark of Oracle and/or its affiliates. XFS ® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL ® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
    [Show full text]
  • Perl DBI API Reference
    H Perl DBI API Reference This appendix describes the Perl DBI application programming interface. The API consists of a set of methods and attributes for communicating with database servers and accessing databases from Perl scripts. The appendix also describes MySQL-specific extensions to DBI provided by DBD::mysql, the MySQL database driver. I assume here a minimum version of DBI 1.50, although most of the material applies to earlier versions as well. DBI 1.50 requires at least Perl 5.6.0 (with 5.6.1 preferred). As of DBI 1.611, the minimum Perl version is 5.8.1. I also assume a minimum version of DBD::mysql 4.00. To determine your versions of DBI and DBD::mysql (assuming that they are installed), run this program: #!/usr/bin/perl # dbi-version.pl - display DBI and DBD::mysql versions use DBI; print "DBI::VERSION: $DBI::VERSION\n"; use DBD::mysql; print "DBD::mysql::VERSION: $DBD::mysql::VERSION\n"; If you need to install the DBI software, see Appendix A , “Software Required to Use This Book.” Some DBI methods and attributes are not discussed here, either because they do not apply to MySQL or because they are experimental methods that may change as they are developed or may even be dropped. Some MySQL-specific DBD methods are not discussed because they are obsolete. For more information about new or obsolete methods, see the DBI or DBD::mysql documentation, available at http://dbi.perl.org or by running the following commands: % perldoc DBI % perldoc DBI::FAQ % perldoc DBD::mysql The examples in this appendix are only brief code fragments.
    [Show full text]
  • Accessing DB from Programming Languages
    Accessing DB from programming languages JDBCJDBC andand ODBCODBC • API (application-program interface) for a program to interact with a database server • Application makes calls to – Connect with the database server – Send SQL commands to the database server – Fetch tuples of result one-by-one into program variables • ODBC (Open Database Connectivity) works with C, C++, C#, and Visual Basic – Other API’s such as ADO.NET sit on top of ODBC • JDBC (Java Database Connectivity) works with Java JDBCJDBC • JDBC is a Java API for communicating with database systems supporting SQL. • JDBC supports a variety of features for querying and updating data, and for retrieving query results. • JDBC also supports metadata retrieval, such as querying about relations present in the database and the names and types of relation attributes. • Model for communicating with the database: – Open a connection – Create a “statement” object – Execute queries using the Statement object to send queries and fetch results – Exception mechanism to handle errors JDBCJDBC CodeCode public static void JDBCexample(String dbid, String userid, String passwd) { try { Class.forName ("oracle.jdbc.driver.OracleDriver"); Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@db.yale.edu:2000:univdb", userid, passwd); Statement stmt = conn.createStatement(); … Do Actual Work …. stmt.close(); conn.close(); } catch (SQLException sqle) { System.out.println("SQLException : " + sqle); } } JDBCJDBC CodeCode (Cont.)(Cont.) • Update to database try { stmt.executeUpdate( "insert
    [Show full text]
  • Insert Query in Java Using Prepared Statement
    Insert Query In Java Using Prepared Statement Overriding Ike reflates impartially while Barton always triturates his oftenness interpages faithfully, he mistrusts so boyishly. Piet remains circumfluous after Wade locate definably or decentralised any definition. Zacherie is aristocratically large-minded after scrubbier Stillman break-outs his sexes sketchily. By allowing the standard access to create a prepared statements quickly delete data is registered list of query in using insert java prepared statement affecting the stored procedure Stmt db-prepareINSERT INTO foo firstname lastname email VALUES. All these source stuff and easily switch to understand your name in cleanup after the insert statement is part of user row can add to above tutorial in. Previously he spares his picture might require that counted the using insert query in java statement can be grouped in statement and respond to. An interest in case of data expected by the member, we check the program to advancing racial equity for using insert query that does it. To teach good coding world through this clause if it behave in prepared insert query statement in java using a later filled with technological advances. Java PreparedStatement javatpoint. When people prepare the statement Cassandra parses the folder string caches the result. To distress an INSERT statement against multiple rows the normal method is to commend a. Java JDBC Tutorial Inserting Data with User Input luv2code. Update PostgreSQL Record using Prepared Statement in Java. To insert a service in school table using PreparedStatement in Java you need not use below syntax to. The typical workflow of using a prepared statement is as follows.
    [Show full text]
  • Automated Fix Generator for SQL Injection Attacks
    Automated Fix Generator for SQL Injection Attacks Fred Dysart and Mark Sherriff Department of Computer Science, University of Virginia, Charlottesville, VA 22903 {ftd4q, sherriff}@virginia.edu Abstract Thomas’s solution, any variable that defines a prepared A critical problem facing today’s internet community statement’s structure must be within the same scope as is the increasing number of attacks exploiting flaws the execution of that statement. Our solution does not found in Web applications. This paper specifically incur this limitation because the generation of the targets input validation vulnerabilities found in SQL prepared statement fix is not dependant on the actual queries that may lead to SQL Injection Attacks statement declaration in the code. (SQLIAs). We introduce a tool that automatically detects and suggests fixes to SQL queries that are found 3. SecurePHP to contain SQL Injection Vulnerabilities (SQLIVs). Our solution is called SecurePHP. It was written in Testing was performed against phpBB v2.0, an open C# and utilized the .NET framework. There were two source forum package, to determine the accuracy and main design decisions that guided us through efficacy of our software. development. First, we wanted the tool to be easy to use. While all applications should be simple for a user 1. Introduction to interact with, the reasoning behind our decision was According to the National Institute of Standards and that the increasing amount of SQLIVs present in Technology, SQL Injection Vulnerabilities (SQLIVs) software might be from legacy software that is not amounted 14% of the total Web application maintained by a developer with experience fixing vulnerabilities in 2006 [3].
    [Show full text]
  • TIBCO® Data Virtualization Client Interfaces Guide Version 7.0.6
    TIBCO® Data Virtualization Client Interfaces Guide Version 7.0.6 Last Updated: November 20, 2017 Important Information SOME TIBCO SOFTWARE EMBEDS OR BUNDLES OTHER TIBCO SOFTWARE. USE OF SUCH EMBEDDED OR BUNDLED TIBCO SOFTWARE IS SOLELY TO ENABLE THE FUNCTIONALITY (OR PROVIDE LIMITED ADD-ON FUNCTIONALITY) OF THE LICENSED TIBCO SOFTWARE. THE EMBEDDED OR BUNDLED SOFTWARE IS NOT LICENSED TO BE USED OR ACCESSED BY ANY OTHER TIBCO SOFTWARE OR FOR ANY OTHER PURPOSE. USE OF TIBCO SOFTWARE AND THIS DOCUMENT IS SUBJECT TO THE TERMS AND CONDITIONS OF A LICENSE AGREEMENT FOUND IN EITHER A SEPARATELY EXECUTED SOFTWARE LICENSE AGREEMENT, OR, IF THERE IS NO SUCH SEPARATE AGREEMENT, THE CLICKWRAP END USER LICENSE AGREEMENT WHICH IS DISPLAYED DURING DOWNLOAD OR INSTALLATION OF THE SOFTWARE (AND WHICH IS DUPLICATED IN THE LICENSE FILE) OR IF THERE IS NO SUCH SOFTWARE LICENSE AGREEMENT OR CLICKWRAP END USER LICENSE AGREEMENT, THE LICENSE(S) LOCATED IN THE “LICENSE” FILE(S) OF THE SOFTWARE. USE OF THIS DOCUMENT IS SUBJECT TO THOSE TERMS AND CONDITIONS, AND YOUR USE HEREOF SHALL CONSTITUTE ACCEPTANCE OF AND AN AGREEMENT TO BE BOUND BY THE SAME. This document contains confidential information that is subject to U.S. and international copyright laws and treaties. No part of this document may be reproduced in any form without the written authorization of TIBCO Software Inc. TIBCO and the TIBCO logo are either registered trademarks or trademarks of TIBCO Software Inc. in the United States and/or other countries TIBCO, Two-Second Advantage, TIBCO Spotfire? TIBCO ActiveSpaces, TIBCO Spotfire Developer, TIBCO EMS, TIBCO Spotfire Automation Services, TIBCO Enterprise Runtime for R, TIBCO Spotfire Server, TIBCO Spotfire Web Player, TIBCO Spotfire Statistics Services, S-PLUS, and TIBCO Spotfire S+ are either registered trademarks or trademarks of TIBCO Software Inc.
    [Show full text]
  • Embedded SQL N Functions and Procedural Constructs N Triggers
    CS425 – Summer 2016 Jason Arnold Chapter 6: Advanced SQL modified from: Database System Concepts, 6th Ed. ©Silberschatz, Korth and Sudarshan See www.db-book.com for conditions on re-use Chapter 6: Advanced SQL n Accessing SQL From a Programming Language l Dynamic SQL JDBC and ODBC l Embedded SQL n Functions and Procedural Constructs n Triggers Textbook: Chapter 5 CS425 – Fall 2013 – Boris Glavic 5.2 ©Silberschatz, Korth and Sudarshan Accessing SQL From a Programming Language CS425 – Fall 2013 – Boris Glavic 5.3 ©Silberschatz, Korth and Sudarshan JDBC and ODBC n API (application-program interface) for a program to interact with a database server n Application makes calls to l Connect with the database server l Send SQL commands to the database server l Fetch tuples of result one-by-one into program variables n ODBC (Open Database Connectivity) works with C, C++, C#, and Visual Basic l Other API’s such as ADO.NET sit on top of ODBC n JDBC (Java Database Connectivity) works with Java CS425 – Fall 2013 – Boris Glavic 5.4 ©Silberschatz, Korth and Sudarshan Native APIs n Most DBMS also define DBMS specific APIs n Oracle: OCI n Postgres: libpg … CS425 – Fall 2013 – Boris Glavic 5.5 ©Silberschatz, Korth and Sudarshan JDBC n JDBC is a Java API for communicating with database systems supporting SQL. n JDBC supports a variety of features for querying and updating data, and for retrieving query results. n JDBC also supports metadata retrieval, such as querying about relations present in the database and the names and types of relation attributes.
    [Show full text]
  • Perl Variables Scalar ($) Array (@) Hash (%)
    Practical Extraction and Report Language « Perl is a language of getting your job done » « There is more than one way to do it » Larry Wall VI, October 2006 Page 1 Perl Outline : History Structure of a simple Perl script Perl variables scalar ($) array (@) hash (%) Operators (numeric, string & logical) Statement modifiers (if/elsif/else, for/foreach, while) VI, October 2006 Page 2 Practical Extraction and Report Language http://perl.oreilly.com " Perl is both a programming language and an application on your computer that runs those programs " VI, October 2006 Page 3 Perl history A few dates: 1969 UNIX was born at Bell Labs. 1970 Brian Kernighan suggested the name "Unix" and the operating system we know today was born. 1972 The programming language C is born at the Bell Labs (C is one of Perl's ancestors). 1973 “grep” is introduced by Ken Thompson as an external utility: Global REgular expression Print. 1976 Steven Jobs and Steven Wozniak found Apple Computer (1 April). 1977 The computer language awk is designed by Alfred V. Aho, Peter J. Weinberger, and Brian W. Kernighan (awk is one of Perl's ancestors). VI, October 2006 Page 4 Perl history 1987 Perl 1.000 is unleashed upon the world NAME perl | Practical Extraction and Report Language SYNOPSIS perl [options] filename args DESCRIPTION Perl is a interpreted language optimized for scanning arbitrary text files, extracting information from those text files, and printing reports based on that information. It's also a good language for many system management tasks. The language is intended to be practical (easy to use, efficient, complete) rather than beautiful (tiny, elegant, minimal).
    [Show full text]
  • Sql Server to Aurora Postgresql Migration Playbook
    Microsoft SQL Server To Amazon Aurora with Post- greSQL Compatibility Migration Playbook 1.0 Preliminary September 2018 © 2018 Amazon Web Services, Inc. or its affiliates. All rights reserved. Notices This document is provided for informational purposes only. It represents AWS’s current product offer- ings and practices as of the date of issue of this document, which are subject to change without notice. Customers are responsible for making their own independent assessment of the information in this document and any use of AWS’s products or services, each of which is provided “as is” without war- ranty of any kind, whether express or implied. This document does not create any warranties, rep- resentations, contractual commitments, conditions or assurances from AWS, its affiliates, suppliers or licensors. The responsibilities and liabilities of AWS to its customers are controlled by AWS agree- ments, and this document is not part of, nor does it modify, any agreement between AWS and its cus- tomers. - 2 - Table of Contents Introduction 9 Tables of Feature Compatibility 12 AWS Schema and Data Migration Tools 20 AWS Schema Conversion Tool (SCT) 21 Overview 21 Migrating a Database 21 SCT Action Code Index 31 Creating Tables 32 Data Types 32 Collations 33 PIVOT and UNPIVOT 33 TOP and FETCH 34 Cursors 34 Flow Control 35 Transaction Isolation 35 Stored Procedures 36 Triggers 36 MERGE 37 Query hints and plan guides 37 Full Text Search 38 Indexes 38 Partitioning 39 Backup 40 SQL Server Mail 40 SQL Server Agent 41 Service Broker 41 XML 42 Constraints
    [Show full text]
  • OTRS Developer Manual Release 8.0
    OTRS Developer Manual Release 8.0 OTRS AG Jul 08, 2020 Contents 1 Getting Started 3 1.1 Development Environment ..................................... 3 1.1.1 Obtain the Source Code .................................. 3 1.1.2 Useful Tools ......................................... 3 1.1.3 Linking Expansion Modules ................................ 4 1.2 Architecture Overview ........................................ 4 1.2.1 Directories .......................................... 7 1.2.2 Files ............................................. 7 1.2.3 Core Modules ........................................ 7 1.2.4 Front End Handle ...................................... 8 1.2.5 Front End Modules ..................................... 8 1.2.6 CMD Front End ....................................... 8 1.2.7 Generic Interface Modules ................................. 8 1.2.8 Scheduler Task Handler Modules ............................. 9 1.2.9 Database .......................................... 10 2 OTRS Internals - How it Works 11 2.1 Config Mechanism .......................................... 11 2.1.1 Defaults.pm: OTRS Default Configuration ...................... 11 2.1.2 Automatically Generated Configuration Files ....................... 11 2.1.3 XML Configuration Files .................................. 11 2.1.4 Accessing Config Options at Runtime .......................... 20 2.2 Database Mechanism ........................................ 21 2.2.1 SQL ............................................. 21 2.2.2 XML ............................................
    [Show full text]