PerlEdit User Manual

Sep 7 2003

Contents:

 

 

About PerlEdit

PerlEdit is an IDE for Perl and a general-purpose text editor.  It includes a source code text editor with syntax highlighting and a visual debugger. 

It is fast and lightweight with a download size of less than 2 MB.  PerlEdit is multi-platform  and currently supports Windows and Linux.

Features include: language aware color syntax syntax highlighting, debugging of stand-alone and CGI Perl scripts, search and replace with Perl regular expressions, editing of files on remote machines using FTP, multi-level undo, multi-document interface, keystroke macros, plugins written in Perl, Unix, Windows and Mac file format support.

PerlEdit is free for personal non-commercial use.  Commercial use require the purchase of a commercial license.

 

Features

Editor

IDE

Debugger (commercial version only)

Plugins

 

Differences between Free, Lite, Pro, and Trial Versions

PerlEdit can operate in one of  four modes as described below.

When PerlEdit is initially installed it will operate in Trial mode for 30 days.  All functions will operate normally.

After 30 days PerlEdit will switch to Free mode.  In Free mode some functions such as 'Debug' are not available.

If a registration key is added to PerlEdit it will operate in registered Lite or Pro mode.  Currently the only difference between Lite and Pro is the level of support available.  All functions will operate normally.

 

System Requirements

Windows: Any Windows 32 bit OS, including Win95/98/ME/NT/2K/XP.
Linux: Red-Hat Linux 6.2 or newer.
Disk space: 5MB

 

Installation

Installation on Windows

Download the installer perledit-x.xx.exe file and run it.  It will prompt for an installation directory and shortcut folder name.  This will create a shortcut folder and add the installation directory to your PATH environment variable.

If you want to use the Perl syntax checking and debugging features you will also need to install Perl.

If you have a registration key, start PerlEdit then click on Help/Register and enter your registration key.

Installation on Unix

Untar the installer file perledit-x.xx-xxx.tar.gz with the commands:
cd ~
gzip -dc perledit-*.tar.gz | tar -xf -

This will create a perledit sub-directory.   For a personal installation we suggest that you install into ~/perledit , for a shared installation use the folder /usr/local/perledit.

Run the following commands and also add the lines to your .bash_profile or .profile file:
export PATH=install_dir:$PATH
export PERL5DB="BEGIN {require 'install_dir/Devel/pridedb.pm'}"

Where 'install_dir' is the directory where you installed PerlEdit.

Error message: undefined symbol SmcOpenConnection
If you get the error message undefined symbol SmcOpenConnection, download www.indigostar.com/download/libGL.so.1 and www.indigostar.com/download/libGLU.so.1 . Copy the files to the current directory, and start pe from a command line prompt

You can also set the environment variable LD_RUN_PATH to the full path to where the libraries are located. This will eliminate the requirement to have the libraries in the current directory.

If you have a registration key, start PerlEdit then click on Help/Register and enter your registration key.

Uninstalling on Windows

Click on Start, Setting, Control Panel, Add/Remove Programs, then select and click on PerlEdit.  Or, alternatively you can click on the Uninstall icon the PerlEdit shortcut folder.

Uninstalling on Unix

Remove the PerlEdit files with the command:
rm -r install_dir

Where 'install_dir' is the directory where you installed PerlEdit.

Undo any changes that you made to the ~/.profile or ~/.bash_profile files.

 

Starting and Closing PerlEdit

From the start menu shortcut

Click on Start/Programs/PerlEdit, then click on the PerlEdit shortcut.

From an Explorer Window

Right click on any text file and click on 'Open with PerlEdit'.

From a DOS or shell window:

Enter the command
pe filename...

You can also enter multiple filenames or filenames with wildcards.  Filenames containing spaces must be enclosed in double quotes.

Closing PerlEdit

Quit: Exits the program. If any edit windows have been modified but not yet saved, you will be prompted to save them.
Menu: File/Quit Shortcut: Ctrl+Q.

Exit: Exits the program. If any edit windows have been modified but not yet saved, you will be prompted to save them.
Menu: File/Exit

 

Opening and Saving Files

Opening and Saving Local files

Use the open and save commands to open a text file for editing and to save the changes.  The save-as command is be used to save the file to a new location or to a new name.  Once a file has been opened it will appear in the recent files list in the File menu.

Open: To open a file enter File/Open or Ctrl+O.
Save: To save a file enter File/Save or Ctrl+S.
Close: To close a file enter File/Close or Ctrl+W.
SaveAs: To save a file with a new name or location  enter File/SaveAs.
New: To create a new blank document enter Ctrl+N or File/New
Recent: To open a file that was opened previously enter File then a number 1-9

Opening and Saving Remote Files with FTP

PerlEdit allows you to transparently edit files located on a remote machine using File Transfer Protocol (FTP).  The remote Open and Save dialog boxes allow you to enter a hostname, user name and password.  The dialog boxes also provide a history list from which you can select a previously selected host.  Once a remote file has been opened it will appear in the recent files list in the File menu.

Open Remote: To open a file on a remote machine enter File/Open Remote FTP or Ctrl+Shift+O.
Save As Remote: To save a file to a remote machine enter File/Save As Remote FTP or Ctrl+Shift+S.
Recent: To open a file that was opened previously enter File then a number 1-9

 

Editing Files

Basic Editing

Use the text keys to insert text and the cursor keys to move the cursor.  The edit window can be scrolled up and down by pressing ctrl-cursor-up or ctrl-cursor-down.  The editor keeps a multi-level undo list.

Undo:  This will undo the last change.  Click Edit/Undo or press Ctrl+Z.
Redo:  This will undo the last undo.  Click Edit/Redo or press Ctrl+Y.

Using Cut, Copy and Paste

The Cut, Copy and Paste commands work on selected blocks of text.  Blocks of text can be selected by dragging the mouse over them or by pressing the shift key along with the cursor movement keys.

Cut:  To cut text enter Edit/Cut Ctrl+X.
Copy:
  To copy text enter Edit/Copy or Ctrl+C.
Paste: To paste text enter Edit/Paste or Ctrl+Y.

Finding and Replacing Text

Perl Regular expressions: PerlEdit can use Perl regular expressions in the find and replace commands.  For example the string "(\d+) (cm|inch)" will match a number of digits followed by either 'cm' or 'inch'.  It will match twice in the string "I am 72 inch or 180 cm tall".  Text that matched the patterns inside the string is captured and can be used in the replacement string.  For example a replacement string of "height=$1 $2" would replace "72 inch" with "height=72 inch".  A full description of regular expressions is beyond the scope of this manual.

Find or Replace: The Find/Replace command is used to search for text and optionally to replace the text with new text.  One dialog is is used for both functions.
Click on Edit/Find/Replace or enter Ctrl+F.

Repeat find: This will repeat the previous search.
Click on Edit/Repeat Find or press F3.

Quick Find: This will find the the next occurrence of the word at the cursor.
Click Edit/Quick Find or press Ctrl-F3

Repeat Replace: This will repeat the last replace command.
Click Edit/Repeat Replace or press F4

Using Bookmarks

Bookmark are visual markers attached lines in a text file.  Bookmark are persistent, they are remembered when the file is reopened.

Bookmark Toggle:  This will add or remove a bookmark.
Click Edit/BookmarkToggle or press Ctrl+F2, or click the toolbar icon.

Next Mark: This will go to the next bookmark, breakpoint or error.
Click Edit/GotoNextMark.or press F2

Previous Mark: This will o go to the previous bookmark, breakpoint or error.
Click Edit/GotoPrevMark.or press Shift+F2

 

Changing the file format

File Format: This command is used to change the type of line endings used in the file.  The choices are Windows, Unix or Mac.
Click on Edit/File Format

 

Other Edit Commands

GotoLine: This will prompt for a line number and will move the cursor to that line
Click on Edit/Goto Line... or press Ctrl-G

Indent: Select a group of lines then use this command to move the text to the right.
Click Edit/Indent or press Tab

Unindent: Select a group of lines then use this command to move the text to the left.
Click on Edit/Outdent or press Shift+Tab (Windows) Ctrl+Shift+I (Linux)

Other File Commands

Print: Prints the current file to the printer.
Menu: File/Print... Shortcut: Ctrl+P, Toolbar: yes

Other Tools Commands

Options: This will display an options dialog that allows you to set various options.
Menu: Tools/Options... Shortcut: Alt+F7

Play Macro: This will play back keystrokes recorded by the last Record Keystrokes command.
Menu: Tools/Play Macro Shortcut: F6

Record Macro: This will record all keystrokes until the Stop Recording command is used.
Menu: Tools/Record Macro Shortcut: Shift+F6

Stop Record Macro: This will stop recording keystrokes.
Menu: Tools/Stop Record Macro Shortcut: Ctrl+F6

Bleach: Runs the bleach plugin.  It will convert the text in the document to white-space.  The file can be saved in this format to provide a trivial level of obfuscation.  Clicking Bleach again will restore the text.  This is also an example plugin.
Menu: Tools/Bleach Shortcut: Alt+1 Toolbar:

Example Plugin: Runs the example plugin.
Menu: Tools/Example Plugin Shortcut: Alt+A

 

Subroutine Menu

This menu item will display a list of subroutines in the current file.  A checkmark is displayed next to the current subroutine.  Click on a subroutine name to move the cursor to it.
 

Windows Commands

Show output: This will show or hide the output window.  The output window is used to store information such as the raw output from a syntax check command.
Menu: Windows/Show Output Shortcut: Esc

Stay on top: This will keep the PerlEdit on top of all other applications. (Windows Only)
Menu: Windows/Stay on Top

List of open files: Select one of the listed files to view it.  The current file is displayed wit ha checkmark
Menu: Windows/number

Help Commands

Manual:  Display the user manual in a new Web Browser window.  On Windows the default browser is the default browser for the system.  On Unix the default browser is Netscape.  To select a different browser set the environment variable PERLEDIT_BROWSER to the path to the browser before starting PerlEdit.
Menu: Help/Manual

Keyword help: To display help for a perl built-in function like print, open, etc or a Perl module, place the keyboard cursor on the work and press F1.
Menu: Help/Keyword Help Shortcut: F1

About: Display version and copyright information
Menu: Help/About

Register...: This will allow you to enter your registration key if you have one
Menu: Help/Register

 

Syntax Checking Your Script

Check Syntax: To perform a syntax check the current file click on the Check icon or Tools/CheckSyntax or press Shift+F7.  Errors will displayed in the window in your document. 

Next Mark: To go to the next bookmark, breakpoint or error click Edit/GotoNextMark.or enter F2

Previous Mark: To go to the previous bookmark, breakpoint or error  click Edit/GotoPrevMark.or enter Shift+F2

Show Output: To see the full details of the messages produced by Perl -c, click on Window/ShowOutput.

 

Debugging a Perl script

Starting the script from PerlEdit

Open the script in PerlEdit then start the debugger by clicking on Tools, Run.  Breakpoints may be added to the script before starting the script or while it is running.

Debug Commands:

Run: This will run the current script.  It will stop at the next breakpoint if there is one or when the program ends.
Click on Tools/Run or press F5 or click on the toolbar icon.

Continue: This will continue execution of the program.  It will stop at the next breakpoint if there is one or when the program ends.
Click on Debug/Continue or press F5 or click on the toolbar icon.

StepInto: This will execute the current statement and if the statement is a function call it will stop inside the called function.  If the statement is not a function call then this command is the same as Step Over.
Click on Debug/Step Into or press F11 or click on the toolbar icon.

StepOver: This will execute the current line and stop at the next line.
Click on Debug/Step Over or press F10 or click on the toolbar icon.

StepOut: This will execute the remaining statements in the current function and will stop at the next line after the function has returned.
Click on Debug/Step Out.  Shortcut: Shift+F11 or click on the toolbar icon.

RunToCursor: This will continue execution of the program and stop at the line where the cursor is.
Click on Debug/Run to Cursor or press Ctrl+F10 or click on the toolbar icon.

Breakpoint: Set or remove a breakpoint at the current line.
Click on Edit/Breakpoint Toggle or press F9 or click on the toolbar icon.

 

Using the Variables window

The Variables window is used display values of variables near the current line pointer.  The list of variables and the values are updated whenever the debugger reaches a breakpoint.  To change the value of a variable type in the new value.

Using the Watch window

The Watch window is used to display the values of user specified variables.  To add a variable to the watch window type the variable name into the window.  The variables will be updated with current values when you press enter or whenever the debugger reaches a breakpoint.  To change the value of a variable type in the new value, but do not press enter.

 

Debugging a script from a DOS Window

Start PerlEdit first.

In the example below ''install_dir' is the directory where you installed PerlEdit.  Set an environment variable with the following command:
set PERL5DB=BEGIN {require 'install_dir/Devel/pridedb.pm'}
Example:
set PERL5DB=BEGIN {require 'C:/Program Files/PerlEdit/Devel/pridedb.pm'}
Then run the script with the following command:
perl -d yourscript.pl

Or you can use the following command:
perl -I "install_dir" -d:pridedb yourscript.pl
Example:
perl -I "C:/Program Files/PerlEdit/Devel" -d:pridedb yourscript.pl

Debugging a script from a shell Window

Set an environment variable with the following command:
export "PERL5DB=BEGIN {require 'install_dir/Devel/pridedb.pm'}"
Then run the script with the following command:
perl -d yourscript.pl

Or you can use the following command:
perl -I install_dir -d:pridedb yourscript.pl

Debugging a CGI script on a local web server

Modify the first line of your script as shown below:
#!/path/to/perl -I install_dir -d:pridedb

On Windows if you have Perl.exe in your path, you can use:
#!perl -I install_dir -d:pridedb

If the path contains a space then enclose it in quotes.  Example:
#!perl -I "C:\Program Files\PerlEdit" -d:pridedb

Start PerlEdit then start the Perl script from a web browser.

Debugging a CGI script on a remote web server

Copy the script from install_dir/Devel/pridedb.pm to the remote machine into a directory path like remote_dir/Devel/pridedb.pm .  A good place to put the Devel directory is in the cgi-bin directory of your webserver.  Edit the script and change the line $debug_server_host= 'localhost'; to the name or ip address of the machine where PerlEdit is running.

Modify the first line of your script as shown below:
#!/path/to/perl -I remote_dir -d:pridedb
or, the following will work if Devel/pridedb.pm is in cgi-bin
#!/path/to/perl -d:pridedb

You will need FTP access to the files being debugged or a local copy of  them.  Tell PerlEdit how to map remote filenames to local filenames.  There is currently no UI for doing this.  Edit the pe_config.xml file using a text editor and change the values of the entries localPrefix and remotePrefix as needed.  Don't use PerlEdit to edit this file as it will get overwritten when PerlEdit exits.

Don't forget to change the entries back when you are done working with remote scripts. 

Start PerlEdit then start the Perl script from a web browser.

Example 1: If your script is located at /usr/local/etc/httpd/cgi-bin/dbgcgi.pl and can be reached at the same location using FTP, then use the values:
remotePrefix=ftp://username:password@yourhost.com
localPrefix=

Example 2: If your script is located at /usr/local/etc/httpd/cgi-bin/dbgcgi.pl and your local copy is at C:\localweb\cgi-bin , then use the values:
remotePrefix=/usr/local/etc/httpd/cgi-bin
localPrefix=C:/localweb/cgi-bin

 

Plugins

PerlEdit plugins are used to manipulate the text being edited.  A plugin is a perl script or executable program that reads data from the file being edited and replaces it with new text.  It can be used, for example, to re-indent code.

To run a plugin click on the tools menu and then on the name of the plugin, or click the icon in the toolbar.

PerlEdit will send data in the current file to the standard input of the plugin and replace it with data from the standard output of the plugin.  If any text is selected when a plugin is invoked it will be sent as input to the plugin otherwise the entire text will be sent.  If any text is selected when a plugin is invoked it will be replaced by the output of the plugin otherwise the entire text will be replaced.

Plugin Design Tutorial

Below is code for a simple plugin which prepends the text 'xx ' in front of every line.
$| = 1;  # disable buffering
while (<STDIN>) {
    print "XX $_";
}

Installing a plugin

Save this file as myplugin.pl in the plugins directory.  An item 'myplugin' will be automatically added to the Tools menu when PerlEdit is started. Plugins are assigned accelerator keys Alt-1, Alt-2, etc.

Adding a toolbar icon

Copy a myplugin.gif, myplugin.jpg, myplugin.png, or myplugin.xpm image file of size 16x16 to 24x24 pixels to the plugins directory.  PerlEdit will add the image to toolbar.

Specifying plugin options

Create a myplugin.ini file to specify various options as described below:
; menutext defaults to the plugin filename
menutext=My plugin
; description defaults to the plugin filename
description=My plugin description
; accelerator defaults to ALT+1, ALT+2, etc
accelerator=Alt+B
; plugin input all | none, default is 'selected text or all text'
input=default
 

Plugin commands

Plugins can send various text messages commands to affect the behavior of PerlEdit.

#plugin append
By default the plugin's output replaces the current selection if there is one otherwise it replaces all text.  To append text to the current file use the following example:
print "#plugin append\n";
print "This text will be appended to the file\n";

#plugin insert
To insert text at the current position use the following example:
print "#plugin insert\n";
print "This text will be inserted in the file\n";

#plugin norepaint
#plugin repaint
These commands are used to turn off and turn on repainting of the display when text is inserted.
print "#plugin norepaint\n";
print "Some text $_\n" for (0..20);
print "#plugin repaint\n";

#plugin save_cursor
#plugin restore_cursor
These commands are used to save and restore the cursor position after text is inserted.
print "#plugin save_cursor\n";
print "Some text $_\n" for (0..20);
print "#plugin restore_cursor\n";

#plugin save_edited
#plugin restore_edited
These commands are used to save and restore the modified state of the text.
print "#plugin save_edited\n";
print "Some text $_\n" for (0..20);
print "#plugin restore_edited\n";

 

Release History

V1.08 Aug 7 2003
Fixed: Crashes on exit on Windows XP
Fixed: Segmentation fault on Redhat 9

V1.07 May 11 2003
Support for multi-line syntax highlighting
Configurable highlight patterns and colors
Configurable colors, keywords, and subroutine definition
Language definition for C and C++
Fixed: Plugin was not working on Windows
Bracket matching

V1.06 Dec 2 2002
Bugfix: Debug function not working with Perl 5.8

V1.05 Nov 26 2002
Merged the Run and Debug commands into a single Run command
BugFix: Breakpoints not working if script path contains spaces
BugFix: Breakpoints on a CGI script on Windows/Apache was not working
Bugfix: Killing script with Ctrl-C will also close debug session
Bugfix: Cursor line is not visible after loading a file, if current line is off-screen

V1.04 Nov 15 2002
Added FTP support
Added File Format to Edit menu item for setting Windows/Unix/Mac file format
Minor bugfixes

V1.03 Oct 30 2002
Search and replace now uses Perl regular expressions
Bugfix: Minor flicker when line numbers are displayed
Bugfix: lines number col not repainted when text is inserted or deleted
Fixed: Horizontal scrollbar displayed even when not needed.
Cancel overwriting a read-only file during a program exit should cancel the exit
Line-column widget is now bold and red
Fixed: Home key does not scroll window all the way to the left
Syntax syntax displays a dialog box when complete
Changed colors for strings and comments

V1.02 Oct 27
Added Goto Subroutine function
Added recent file list support
Added line number display
Expand wildcards on command line on Windows
Fix case of filename if incorrectly typed on Windows
Display * in caption of modified files
Line-column widget uses red font
Use Fixed font on Linux by default
Bugfix: Strings or comments containing tabs not painted correctly
Bugfix: selecting the current windows from the Windows menu re-shows it as normal even if it was maximized.
Bugfix: opening the same file twice file will open two windows
BugFix: Allow overwriting of read-only file after confirmation
Bugfix: fails on Win98 with install string error message


V1.01 Oct 24 2002
Improved syntax highlighting which now understands single line comments and strings
Added option to disable syntax highlighting
Will optionally prompt before saving a file when doing a syntax check, debug and run
Fixed: screen flashes when doing indent or out-dent
Fixed: keyboard focus is lost if you type ALT then quickly type S
Add split to perl keyword list
Added Cut,Copy,Paste,Undo,Redo,Indent,Outdent commands to the edit menu
- these commands were previously only available by using shortcut keys
Save yes/no dialog will now accept a plain y/n without alt key
Tar file will be extracted into a perledit subdirectory

V1.00 Oct 17 2002
Added Indent/Outdent function Tab/Shift+Tab
Save file before syntax check, debug and run
Fixed: RepeatFind-F3 not working after QuickFind-F3 function
Added keyboard macro
Added Help Manual command
Added Keyword Help F1
Fixed: output window display toggle - ESC
Remember size of output window
Shareware/Lite/Pro/Trial mode

V0.05 Sep 30 2002
Added Watch window
Improved Variables window
Fixed: Multiple replace commands misses some strings
Remote debugging support
Added bleach plugin

V0.03 Feb 24 2002
New feature: Auto Indent
New feature: Code Completion
Fixed: Plugins not working on Win 9x

V0.02 Feb 16 2002
Updated documentation
Minor bug fixes

V0.01  Jan 31 2002
Support for Filter plugins
Syntax check output is displayed in the edit window

V0.00  Jan 23 2002
Original release
 

PerlEdit License Agreement

By using and installing this Software you agree to be bound by the terms of this license agreement. If you do not agree to the terms of this license you may not use the Software.


1. LICENSE GRANT.
This License grants you a non-exclusive, non-transferable license to use the Software only in one of the specific contexts as follows:

(i) Commercial Use.
If you have purchased a commercial License, the license granted herein allows you to use the Software by one user on one computer at a time. You will obtain a separate license for each additional user of the Software on your site. The total number of concurrent users of the Software at one site may not exceed the number of licenses granted to you for that site.  Licensed users of the Software may install one additional copy on a machine at home.

(ii) Evaluation Use.
An Evaluation Use License is hereby granted free of charge. The license granted herein allows you to use the Software only for evaluation purposes for a period of no more than 30 days from the date of installation.

(iii) Non-commercial Use.
A Non-commercial Use License is hereby granted free of charge. The license granted herein allows you to use the Software only for personal, non-commercial, non-business use or for use in a educational or training organization. Except as noted in the previous sentence, the Software may not be used by a corporation, or in any way to provide, or as part of, any commercial service or application. The software may not be used for the benefit of any other person or entity.

(iv) Other Use.
Any use of the Software other than the uses specified in Sections 1(i) to (iii) above requires a separate license from IndigoSTAR and the payment of additional license fees as determined by IndigoSTAR. IndigoSTAR reserves all rights not expressly granted to you.

The software is in use on a computer when it is loaded into the RAM or installed into the permanent memory (e.g., hard disk or other storage device) of that computer.


5. TRANSFER AND USE RESTRICTIONS.
You may not sell, license, sub-license, lend, lease, rent, share, assign, transmit, telecommunicate, export, distribute or otherwise transfer the Software to others. You may not modify, reverse engineer, decompile, decrypt, extract or otherwise disassemble the Software. You may make only one copy of the Software for archival or backup purposes.


3. TERMINATION
This License will terminate immediately without notice from the IndigoSTAR if you fail to comply with any provision of this License Agreement. IndigoSTAR may terminate this License immediately and without prior notice if you breach any term of this License or for any reason whatsoever. In the event of any termination or expiration, you agree to immediately destroy and the original and all copies of the Software and any files created using the Software. You may terminate this License at any time by destroying the Software and all copies thereof.


4. INTELLECTUAL PROPERTY RIGHTS.
The software is licensed, not sold, to you. IndigoSTAR reserves all rights not expressly granted to you. Ownership of the Software and its associated proprietary rights are retained by IndigoSTAR and its licensors. The software is protected by the copyright laws of Canada and the United States and by international treaties. Therefore, you must comply with such laws and treaties in your use of the Software. You agree not to remove any of IndigoSTAR’s copyright, trade-mark and other proprietary notices from the Software.


5. LIMITED WARRANTY.
IndigoSTAR Software represents and warrants that the software and accompanying files will operate and function as documented, and that IndigoSTAR has full and sufficient right, title and authority to assign or grant the rights and/or licenses granted under this License Agreement. IndigoSTAR further warrants that neither the Software nor accompanying files infringe any intellectual property rights or similar rights of any 3rd party and agrees to indemnify you for any loss or damage related to a claim of infringement.

Except for these limited warranties, this software and the accompanying files are sold "as is" and without warranties as to performance of merchantability or any other warranties whether expressed or implied. Because of the various hardware and software environments into which Perl2Exe may be put, NO WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE IS OFFERED. Good data processing procedure dictates that any program be thoroughly tested with non-critical data before relying on it. The user must assume the entire risk of using the program.


8. LIMITATION OF LIABILITY.
Except for claims based on breach of the limited warranties or the indemnity provided above, the liability of either party for claims arising under this Agreement will be limited exclusively to the amount of fees paid under this agreement.


11. ENTIRE AGREEMENT
This agreement constitutes the entire agreement between the IndigoSTAR and the Licensee. If any provision is found to be invalid by a court of competent jurisdiction, the balance of the provisions will remain in full force and effect.


12. GOVERNING LAW
This agreement is governed by the laws of the Province of Ontario, Canada.