1Padre(3) User Contributed Perl Documentation Padre(3)
2
3
4
6 Padre - Perl Application Development and Refactoring Environment
7
9 Padre is a text editor aimed to be an IDE for Perl.
10
11 After installation you should be able to just type in
12
13 padre
14
15 and get the editor working.
16
17 Padre development started in June 2008 and made a lot of progress but
18 there are still lots of missing features and the development is still
19 very fast.
20
22 After installing Padre you can start it by typing padre on the command
23 line. On Windows that would be Start/Run padre.bat
24
25 (TO DO) By default Padre starts with an editor containing a simple Perl
26 script and instructions.
27
28 You can edit the file and save it using File/Save ("Ctrl+S").
29
30 You can run the script by pressing Run/Run Script ("F5")
31
32 You can start new files File/New ("Ctrl+N") or open existing files
33 File/Open ("Ctrl+O").
34
35 By default Padre uses the same Perl interpreter for executing code that
36 it uses for itself but this will be configurable later.
37
39 Instead of duplicating all the text here, let me point you to the web
40 site of Padre <http://padre.perlide.org/> where we keep a list of
41 existing and planned features.
42
44 Configuration
45 The application maintains its configuration information in a directory
46 called .padre.
47
48 Files operations
49 File/New creates a new empty file. By default Padre assumes this is a
50 Perl script. (TO DO later this default will be configurable).
51
52 File/Open allows you to browse for a file and select it for opening.
53
54 File/Open Selection, ("Ctrl+Shift+O") if there is a selected text this
55 will try to locate files that match the selection. If the selection
56 looks like a path Padre will try to open that path either absolute or
57 relative. If it looks like a module name (Some::Thing) it will try to
58 find the appropriate file Some/Thing.pm in @INC and open it. currently
59 this feature opens the first file encountered. (TO DO it should find
60 all the possibilities and if there are multiple hits offer the user to
61 choose. This will be especially important if we are working on a module
62 that is also already installed. Padre might find the installed version
63 first while we might want to open the development version.)
64
65 (TO DO: when the file is not of Perl type we should have other ways to
66 recognize files from internal naming and have paths to search.
67 Surprise, not every language uses @INC.)
68
69 File/Close - checks if the file is saved, if it is closes the current
70 tab.
71
72 File/Close All - closes all opened files (in case they are not saved
73 yet ask for instructions).
74
75 File/Close All but Current - closes all opened files except for the
76 currently being edited.
77
78 File/Reload File - Reloads the file. This is interesting if you either
79 made changes and want to discard them and/or if the file has changed on
80 the disk. If there are unsaved changes Padre will ask you if you really
81 want to throw them away. (TO DO: make a backup of the file before
82 discarding it)
83
84 File/Save "Ctrl+S" - save the current file. If the buffer is not yet
85 saved and has no file name associated with it, Padre will ask you for a
86 file name.
87
88 File/Save As - Offer the user to select a new file name and save the
89 content under that name.
90
91 File/Save All - Save all the currently opened files.
92
93 File/Convert - Convert line endings to Windows, Unix or Mac Classic
94 style.
95
96 Files/Recent Files - a list of recently opened files to open them
97 easily. (TO DO: update the list when we open a file, not only when
98 opening padre) (TO DO: allow the user to configure size of history)
99
100 File/Doc Stats - just random statistics about the current document.
101 (TO DO: If you miss anything important let us know!)
102
103 File/Quit - Exits Padre.
104
105 Simple editing
106 The simple editing features (should) provide the expected behavior for
107 Windows users.
108
109 Edit/Undo "Ctrl+Z"
110
111 Edit/Redo
112
113 Edit/Select All "Ctrl+A", select all the characters in the current
114 document
115
116 Edit/Copy "Ctrl+C"
117
118 Edit/Cut "Ctrl+X"
119
120 Edit/Paste "Ctrl+V"
121
122 (TO DO What is "Ctrl+D" ?, duplicate the current line?)
123
124 Mouse right click
125 Click on the right button of the mouse brings up a context sensitive
126 menu. It provides the basic editing functions and will provide other
127 context sensitive options.
128
129 Projects (TO DO)
130 Padre will have the notion of a Perl project. As we would like to make
131 things as natural as possible for the Perl developer and we think the
132 distribution methods used for "CPAN" module are a good way to handle
133 any project Padre will understand a project as a "CPAN" module. This
134 does not mean that your project needs to end up on "CPAN" of course.
135 But if your projects directory structure follows that of the modules on
136 "CPAN", Padre will be automatically recognize it.
137
138 Module::Starter
139 As a first step in the direction of supporting "CPAN"-style Perl
140 projects we integrated into Padre the use of Module::Starter
141
142 File/New.../Perl Distribution will bring up a dialog box where you can
143 select some of the parameters your new project has such as Name of the
144 Project (e.g. My::Widgets), Author - that is probably your name, e-mail
145 (your e-mail).
146
147 Builder is the tool that you project is going to use to package itself
148 and then your user will use to install the project. Currently
149 Module::Build and ExtUtils::MakeMaker are supported. (TO DO add
150 Module::Install as well).
151
152 License is one of the keywords currently listed in the META.yml spec of
153 Module::Build. (TO DO: update the list or make it dynamic)
154
155 Once you click OK, Module::Starter will create a new directory called
156 My-Widgets in the parent directory you selected in the last field.
157
158 Other
159 On Strawberry Perl you can associate .pl file extension with
160 C:\strawberry\perl\bin\wxperl and then you can start double clicking on
161 the application. It should work...
162
163 Run This ("F5") - run the current buffer with the current Perl this
164 currently only works with files with .pl extensions.
165
166 Run Any ("Ctrl+F5") - run any external application
167
168 First time it will prompt you to a command line that you have to type
169 in such as
170
171 perl /full/path/to/my/script.pl
172
173 ...then it will execute this every time you press "Ctrl+F5" or the menu
174 option. Currently "Ctrl+F5" does not save any file. (This will be
175 added later.)
176
177 You can edit the command line using the Run/Setup menu item.
178
179 Please Note that you can use $ENV{PADRE_VERSION} to detect whether the
180 script is running inside Padre or not.
181
182 Bookmarks
183 View/Set Bookmark ("Ctrl+B") brings up a window with a predefined text
184 containing the file name and line number (TO DO should be the content
185 of the current line).
186
187 View/Go to Bookmark ("Ctrl+Shift+B") brings up a window with the list
188 of available bookmarks. You can select one and press OK to jump to that
189 location. If the file where the bookmark belongs to is not open
190 currently, it will be opened and the cursor will jump to the desired
191 place.
192
193 In both cases while the window is open you can select existing
194 bookmarks and press the Delete button to remove the selected one or
195 press Delete All to remove all the existing bookmarks.
196
197 Navigation
198 Ctrl+G Go to Line
199 Ctrl+1 Matching Brace
200 Ctrl+2 Quick Fix
201 Ctrl+. Next Problem
202 Ctrl+P Word Auto-completion
203 Alt+N Nth Pane
204 Ctrl+Tab Next Pane
205 Ctrl+Shift+Tab Previous Pane
206 Alt+S Jump to list of subs window
207
208 Ctrl+M Ctrl+Shift+M comment/uncomment selected lines of code
209
210 Ctrl+H opens a help window where you can see the documentation of
211 any Perl module. Just use open (in the help window) and type in the name
212 of a module.
213
214 Ctrl+Shift+H Highlight the name of a module in the editor and then
215 press Ctrl+Shift+H. It will open the help window for the module
216 whose name was highlighted.
217
218 In the help window you can also start typing the name of a module. When the
219 list of the matching possible modules is small enough you'll be able
220 to open the drop-down list and select the name.
221 The "small enough" is controlled by two configuration options in the
222 Edit/Setup menu:
223
224 Max Number of modules
225 Min Number of modules
226
227 This feature only works after you have indexed all the modules
228 on your computer. Indexing is currently done by running the following command:
229
230 padre --index
231
232 Rectangular Text Selection
233 Simple text editors usually only allow you to select contiguous lines
234 of text with your mouse. Sometimes, however, it is handy to be able to
235 select a rectangular area of text for more precise
236 cutting/copying/pasting or performing search/replace on. You can select
237 a rectangular area in Padre by holding down "Ctrl+Alt" whilst selecting
238 text with your mouse.
239
240 For example, imagine you have the following nicely formatted hash
241 assignment in a Perl source file:
242
243 my %hash = (
244 key1 => 'value1',
245 key2 => 'value2',
246 key3 => 'value3',
247 );
248
249 With a rectangular text selection you can select only the keys, only
250 the values, etc..
251
252 Syntax highlighting
253 Padre is using Wx (aka wxPerl), wxWidgets for GUI and Scintilla for the
254 editor. Scintilla provides very good syntax highlighting for many
255 languages but Padre is still bound by the version of Scintilla
256 included.
257
258 The share/styles/default.yml file is the mapping between the Scintilla
259 defined constants for various syntactical elements of each language and
260 the "RGB" values of the color to be used to highlight them.
261
262 Adding new syntax highlighting
263
264 To set up a custom syntax highlighting scheme, you create a .yml file
265 that defines the mappings described above. The easiest way to create
266 your own scheme is probably to copy an existing .yml file (for
267 instance, default.yml) from the share/styles/ folder, put it in
268 ~/.padre/styles, and then modify it. Padre checks this folder on start-
269 up and adds any styles in the .yml files there to the "View -> Style"
270 menu.
271
272 TO DO does this stuff below really belong here?
273
274 Need to define constants in Padre::Util to be in the "Padre::Constant"
275 namespace.
276
277 Need to add the color mapping to share/styles/default.yml
278
279 Need to implement the "Padre::Document::Language" class.
280
281 Need to define the MIME type mapping in Padre::Document
282
283 For examples see Padre::Document::PASM, Padre::Document::PIR,
284 Padre::Document::Perl.
285
286 Syntax checking
287 Depending on a corresponding support in the respective
288 "Padre::Document::Language" class, Padre supports real time syntax
289 checking capabilities:
290
291 · Syntax errors or warnings are displayed in a side bar (usually at
292 the bottom of the Padre window). By double-clicking a list entry
293 you can navigate to the position in the file.
294
295 · Additionally, there is a symbol column on the left side of the
296 editor where colored symbols mark the code lines with problems.
297
298 WARNING NOTE
299
300 Syntax checking for Perl5 documents comes bundled with Padre. It is
301 implemented using "perl -c". This means that parts of the code actually
302 get executed (e.g. "BEGIN" blocks). Malicious software might used this
303 fact to damage your system ("BEGIN { system('rm -rf ~') }") or suck up
304 your resources ("BEGIN { while(1) { } }"). Syntax checking is
305 currently disabled by default and has to be enabled manually after
306 every start of Padre. This somewhat increases security when doing
307 "padre some_unknown_file.pl". However, it does not protect you when
308 you open a file from within Padre while syntax checking is turned on.
309 The most secure solution would require a really fast non-executing
310 syntax checker which unfortunately is currently not available.
311
313 There are several types of preferences we can think of. There are the
314 current view printed preferences such as Show newlines or Show Line
315 numbers and there are the project and file oriented preferences such as
316 the use of tabulators or white space for indentation.
317
318 We would like to achieve that the
319
320 Currently some of the preferences are accessible via the
321 Edit/Preferences menu options, others via the View menu option.
322
323 We have to make sure that when changing the preferences via the GUI it
324 change for the correct things.
325
326 E.g. when changing the Use Tabulators preference it currently applies
327 to all the files open currently or in the future. It should probably
328 apply to the current file and/or the current project. Such options -
329 when changing them - might even be applied "retroactively". That is
330 when I change the tabulator/space mode of a file or a project it should
331 ask if I want to reflow the file with the new method of indentation?
332
333 On the other hand the "Tabulator display size" is purely a local,
334 editor oriented preference. It should probably apply to all files
335 currently open.
336
337 There are other aspects of preferences as well that might not exactly
338 overlap with the above set:
339
340 The developer might work on the same project on different machines. In
341 such case some of the personal preferences should apply only only on
342 one computer while others apply in both places.
343
344 In particular if Padre is installed in a Portable Perl it might run on
345 machines with different parameters. Screen size and resolution might be
346 different along other parameters. We would like to make sure the
347 relevant preferences are separated from those that are constant even
348 when moving between computers.
349
350 Editor or view oriented preferences
351 Size and location of windows
352 Show/Hide various windows, Status bar, Toolbar
353 Files recently opened
354 Files that were open last time, cursor location
355 Show newlines
356 Show Line numbers
357 Show indentation guide
358 View/Show Indentation Guide
359
360 When set, Padre will display a thin vertical line at every
361 indentation level on every row with are indented more than one
362 level.
363
364 Highlight indentation guide (TO DO)
365 This should be a separate option available only if the "Show
366 indentation guide" and brace matching is on.
367
368 If "SetHighlightGuide" is set to 8 then when the user reaches one
369 side of a pair of braces the indentation guide - if there is one on
370 column 8 - will be highlighted. (in green).
371
372 As I understand Padre should constantly adjust the
373 "SetHighlightGuide" so that in every block the "correct"
374 indentation guide is highlighted.
375
376 Show Call Tips
377 Tabulator display size
378 Allow experimental features
379 In order to allow the experimental features one needs to manually
380 turn on the experimental flag to 1 in config.yml. As Padre keeps
381 overwriting this file you'll have to make this change with another
382 editor and while Padre is not open.
383
384 The config.yml file is in ~/.padre/ on Linux/Unix and in general in
385 your home directory on Windows. In any case the Help/About box will
386 show you the path of the .padre directory of Padre.
387
388 Once you set the experimental flag when you start Padre you will
389 see a new menu on the right side of the menu bar called
390 Experimental.
391
392 Open file policy
393 What files to open when launching Padre? nothing, new, those that
394 were open last time?
395
396 Max/Min number of modules to display in POD viewer
397 Auto-indentation
398 Possible values: no/same level/deep
399
400 There are at least two levels of auto-indentation:
401
402 1) when ENTER is pressed indent to exactly the same level as the
403 previous line
404
405 2) if there is an opening brace { on the previous line, indent one
406 level more
407
408 Brace matching
409 When the cursor reaches an opening or closing brace { }, square
410 bracket [ ] or parentheses ( ), Padre automatically highlight the
411 pair of the braces.
412
413 TO DO make this optional, let the user set the color
414
415 Auto-save on/off?
416
417 File and Project oriented preferences
418 Indentation should be by tabulators or spaces
419 In case of using spaces for indentation, the width of every
420 indentation level
421
423 Auto-backup (Planned)
424 See Padre::Autosave
425
426 When Padre opens a file it automatically creates a copy of the original
427 in ~/.padre/backup/PATH where PATH is the same PATH as the full PATH
428 of the file. On Windows the initial drive letter is converted to
429 another subdirectory so c:\dir\file.txt will be saved as
430 ~/padre/backup/c/dir/file.txt.
431
432 When a new file is created no need for auto-backup.
433
434 When a remote file is opened the backup will probably go to
435 ~/padre/backup_remote/
436
437 Configurable options: on/off
438
439 Auto-save files (Planned)
440 Every N seconds all the files changed since the last auto-save are
441 saved to a temporary place maybe ~/.padre/save.
442
443 When the user closes the file, the auto-saved file is removed.
444
445 Configurable options: on/off, frequency in seconds
446
448 Padre is using an SQLite database (~/.padre/config.db) for two things.
449 Part of the preferences/configuration information is kept there and it
450 is used for the POD reader.
451
453 Padre currently can index (the names of) all the modules on your system
454 and it was planned to have a search capability for
455 modules/functions/etc.
456
458 There is a highly experimental but quite simple plug-in system.
459
460 A plug-in is a module in the "Padre::Plugin::*" namespace.
461
462 At start-up time Padre looks for all such modules in @INC and in its
463 own private directory and loads them.
464
465 Every plug-in must be a subclass of Padre::Plugin and follow the rules
466 defined in the Padre::Plugin API documentation.
467
468 See also Padre::PluginManager and Padre::PluginBuilder
469
470 While Padre is running there is a menu option to show the plug-in
471 configuration window that shows the list of all the plug-ins.
472
473 TO DO: What to do if a newer version of the same plug-in was installed?
474
475 TO DO: What to do if a module was removed ? Shall we keep its data in
476 the configuration file or remove it?
477
478 TO DO: Padre should offer an easy but simple way for plug-in authors to
479 declare configuration variables and automatically generate both
480 configuration file and configuration dialog. Padre should also allow
481 for full customization of both for those more advanced in Wx.
482
484 Case Changes
485 Change the case of the selected text or if there is no selection all
486 the text in the current file.
487
488 Change all characters to upper or lower case
489
490 Change the first character of every word to upper/lower case leaving
491 the rest as they were.
492
493 Tab and space conversion
494 Tab to Space and Space to Tab conversions ask the number of spaces each
495 tab should substitute. It currently works everywhere. We probably
496 should add a mode to operate only at the beginning of the lines or
497 better yet only at the indentation levels.
498
499 Delete All Ending space does just what it says.
500
501 Delete Leading Space will ask How many leading spaces and act
502 accordingly.
503
505 (planning)
506
507 Search
508 "Ctrl+F" opens the search window, if something was selected then that
509 is given as the search text. Otherwise the last search string should
510 be displayed.
511
512 Provide option to search backwards
513
514 Limit action to current block, current subroutine, current file (should
515 be the default) current project, current directory with some file
516 filters.
517
518 When the user presses Find
519
520 1. We find the first hit and the search window disappears. "F3" jumps
521 to next one.
522
523 2. The first match is highlighted and focused but the window stays
524 When the user clicks on the Find button again, we jump to the next
525 hit In this case the user must be able to edit the document while
526 the search window is on.
527
528 3. All the matches are highlighted and we go to the first match,
529 window disappears. "F3" jumps to next one
530
531 4. All the matches are highlighted and we go to the first one, window
532 stays open user can edit text
533
534 Find and Replace
535 Find - find the next occurrence
536
537 Replace all - do just that
538
539 Replace - if currently a match is selected then replace it find the
540 next occurrence and select it
541
542 TO DO describe what to do if we have to deal with files that are not in the
543 editor
544 if "Replace all" was pressed then do just that
545 1) without opening editors for the files.
546 2) opening an editor for each file and keep it in unsaved state
547 (sounds crazy having 1000 editors open...) if Search or Replace is
548 clicked then we might show the next location in the lower pane. If the
549 user then presses Replace we open the file in an editor window and go
550 on. If the user presses Search then we show the next occurrence.
551 Opened and edited files will be left in a not saved state.
552
554 Padre.pm
555 is the main module.
556
557 Padre::Autosave
558 describes some of our plans for an auto-save mechanism. It is not
559 implemented yet. (There is also some description elsewhere in this
560 document).
561
562 Padre::Config
563 reads/writes the configuration files.
564
565 There is an SQLite database and a YAML file to keep various pieces
566 of information. The database holds host related configuration
567 values while the YAML file holds personal configuration options.
568
569 The SQLite database holds the list of modules available on the
570 system. It will also contain indexing of the documentation Looking
571 at the "" entries of modules List of functions
572
573 Padre::DB
574 The SQLite database abstraction for storing Padre's internal data.
575
576 Padre::Document
577 is an abstraction class to deal with a single document.
578
579 Padre::Document::PASM
580 Padre::Document::PIR
581 Padre::Document::Perl
582 Padre::PluginBuilder
583 Padre::PluginManager
584 locates and loads the plug-ins.
585
586 Plugin
587 Should be the base class of all plug-ins.
588
589 Padre::Pod2HTML
590 Padre::PPI
591 Padre::Project
592 Abstract class understanding what a project is.
593
594 Padre::Project::Perl
595 Is a Perl specific project. These are work in process. Not yet
596 used.
597
598 Padre::TaskManager
599 Managing background tasks.
600
601 Padre::Task
602 Background tasks.
603
604 Padre::Util
605 Various utility functions.
606
607 Wx GUI
608 The "Padre::Wx::*" namespace is supposed to deal with all the Wx
609 related code. Outside of that the code is not supposed to know about
610 Wx, but currently it still does.
611
612 Padre::Wx
613 Padre::Wx::Ack
614 Implementation of the ack integration in "Edit/Ack" menu item. It
615 probably should be either under Dialog or moved out to be a plug-
616 in.
617
618 Padre::Wx::App
619 is the Wx::App subclass. Does not really do much.
620
621 Padre::Wx::Dialog
622 is the parent class of all the major dialogs that are all
623 implemented in modules in the "Padre::Wx::Dialog::*" namespace. It
624 is actually a plain subclass of Wx::Perl::Dialog.
625
626 Padre::Wx::Dialog::Bookmarks
627 Padre::Wx::Dialog::Find
628 Current Find and Replace widget.
629
630 Padre::Wx::Dialog::ModuleStart
631 Module::Start integration. Maybe it should be moved to be a
632 plug-in.
633
634 Padre::Wx::Dialog::PluginManager
635 Padre::Wx::Dialog::Preferences
636 Padre::Wx::Dialog::Search
637 This is the newer Firefox like search box. Not yet integrated.
638
639 Padre::Wx::Dialog::Snippets
640 Padre::Wx::FileDropTarget
641 The code for drag and drop
642
643 Padre::Wx::Editor
644 holds an editor text control instance (one for each buffer/file).
645 This is a subclass of Wx::StyledTextCtrl also known as "STC" or
646 Scintilla.
647
648 Padre::Wx::History::ComboBox
649 Padre::Wx::History::TextEntryDialog
650 Padre::Wx::Main
651 This is the main window, most of the code is currently there.
652
653 Padre::Wx::Menu
654 handles everything the menu should know and do.
655
656 Padre::Wx::Output
657 the output window at the bottom of the editor displaying the output
658 of running code using "F5".
659
660 Padre::Wx::HtmlWindow
661 Padre::Wx::PodFrame
662 Padre::Wx::Popup
663 not in use.
664
665 Padre::Wx::Printout
666 Implementing the printing capability of Padre.
667
668 Padre::Wx::SyntaxCheck
669 Implementing the continuous syntax check of Perl code.
670
671 Padre::Wx::ToolBar
672 handles everything the toolbar should know and do.
673
675 Please submit your bugs at <http://padre.perlide.org/>
676
678 I hope the <http://www.perlmonks.org/> will be ready to take upon
679 themselves supporting this application.
680
681 See also <http://padre.perlide.org/>
682
684 Copyright 2008-2010 The Padre development team as listed in Padre.pm.
685 <http://padre.perlide.org/>
686
688 This program is free software; you can redistribute it and/or modify it
689 under the same terms as Perl 5 itself.
690
692 BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
693 FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT
694 WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER
695 PARTIES PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND,
696 EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
697 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
698 ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH
699 YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
700 NECESSARY SERVICING, REPAIR, OR CORRECTION.
701
702 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
703 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
704 REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE LIABLE
705 TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL, OR
706 CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
707 SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
708 RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
709 FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
710 SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
711 DAMAGES.
712
714 The Padre development team
715 The developers of Padre in alphabetical order:
716
717 Aaron Trevena (TEEJAY)
718
719 Ahmad Zawawi XXXX XXXX XXXXX (AZAWAWI)
720
721 Adam Kennedy (ADAMK) <adamk@cpan.org>
722
723 Breno G. de Oliveira (GARU)
724
725 Brian Cassidy (BRICAS)
726
727 Burak Guersoy (BURAK) <burak@cpan.org>
728
729 Cezary Morga (THEREK) <cm@therek.net>
730
731 Chris Dolan (CHRISDOLAN)
732
733 Claudio Ramirez (CLAUDIO) <padre.claudio@apt-get.be>
734
735 Fayland Lam (FAYLAND) <fayland@gmail.com>
736
737 Gabriel Vieira (GABRIELMAD)
738
739 Gabor Szabo - XXXXX XXX (SZABGAB) <szabgab@gmail.com>
740
741 Heiko Jansen (HJANSEN) <heiko_jansen@web.de>
742
743 Jerome Quelin (JQUELIN) <jquelin@cpan.org>
744
745 Kaare Rasmussen (KAARE) <kaare@cpan.org>
746
747 Keedi Kim - XXX (KEEDI)
748
749 Kenichi Ishigaki - XXXX (ISHIGAKI) <ishigaki@cpan.org>
750
751 Mark Grimes <mgrimes@cpan.org>
752
753 Max Maischein (CORION)
754
755 Olivier Mengue (DOLMEN)
756
757 Patrick Donelan (PDONELAN) <pat@patspam.com>
758
759 PaweX Murias (PMURIAS)
760
761 Petar Shangov (PSHANGOV)
762
763 Ryan Niebur (RSN) <rsn@cpan.org>
764
765 Sebastian Willing (SEWI)
766
767 Steffen Mueller (TSEE) <smueller@cpan.org>
768
769 Zeno Gantner
770
771 Translators
772 Arabic
773
774 Ahmad M. Zawawi - XXXX XXXX XXXXX (AZAWAWI)
775
776 Chinese (Simplified)
777
778 Fayland Lam (FAYLAND)
779
780 Chinese (Traditional)
781
782 BlueT - Matthew Lien - XXX (BLUET) <bluet@cpan.org>
783
784 Chuanren Wu
785
786 Dutch
787
788 Dirk De Nijs (ddn123456)
789
790 English
791
792 Everyone on the team
793
794 French
795
796 Jerome Quelin (JQUELIN)
797
798 Olivier Mengue (DOLMEN)
799
800 German
801
802 Heiko Jansen (HJANSEN)
803
804 Sebastian Willing (SEWI)
805
806 Zeno Gantner
807
808 Hebrew
809
810 Omer Zak - XXXX XX
811
812 Shlomi Fish - XXXXX XXX (SHLOMIF)
813
814 Amir E. Aharoni - XXXX X. XXXXXX
815
816 Hungarian
817
818 Gyoergy Pasztor (GYU)
819
820 Italian
821
822 Simone Blandino (SBLANDIN)
823
824 Japanese
825
826 Kenichi Ishigaki - XXXX (ISHIGAKI)
827
828 Korean
829
830 Keedi Kim - XXX (KEEDI)
831
832 Russian
833
834 Andrew Shitov
835
836 Polish
837
838 Cezary Morga (THEREK)
839
840 Portuguese (Brazilian)
841
842 Breno G. de Oliveira (GARU)
843
844 Spanish
845
846 Paco Alguacil (PacoLinux)
847
848 Enrique Nell (ENELL)
849
850 Czech
851
852 Marcela MaXlaXova (mmaslano)
853
854 Norwegian
855
856 Kjetil Skotheim (KJETIL)
857
858 Turkish
859
860 Burak Guersoy (BURAK) <burak@cpan.org>
861
862 Thanks
863 Mattia Barbon for providing wxPerl. Part of the code was copied from
864 his Wx::Demo application.
865
866 Herbert Breunung for letting me work on Kephra.
867
868 Octavian Rasnita for early testing and bug reports.
869
870 Tatsuhiko Miyagawa for consulting on our I18N and L10N support.
871
872
873
874perl v5.12.1 2010-06-11 Padre(3)