"The means of defense against foreign danger historically have become instruments of tyranny at home." "Os meios de defesa contra o perigo historicamente estrangeiros tornaram-se instrumentos de tirania em casa."-- James Madison - James Madison
Published by: eljonto , on 2008-01-13 19:04:49 Publicado por: eljonto, em 2008-01-13 19:04:49
|A guide to writing event-driven GUI applications in Perl using the Tk module. | Um guia para escrever aplicações GUI-driven evento em Perl usando o módulo Tk. | |Wirtten by ELJONTO\Cyb3r_Shad0w (Both are me). | Wirtten por ELJONTO \ Cyb3r_Shad0w (Ambos estão comigo). | ________________________________________________________________________________
Contents: Sumário: -Introduction -Introdução -Notes on global/local variables -Notes on global / variáveis locais -Mainwindow/widget and argument syntax -Mainwindow/widget Argumento e sintaxe -Geometry managers Geometria-gestores -Structure of a Perl Tk program -Estrutura de um programa Perl Tk -Common widgets and widget arguments Common-flores e argumentos widget -Configuring widgets Configurando-widgets -Example of a perl Tk application -Exemplo de uma aplicação perl Tk -Anatomy of example application -Anatomia exemplo de aplicação -Example programs using different widgets Exemplo-flores diferentes programas utilizando -Label, Entry Fields, Buttons and Text-Areas -Label, entrada Campos, Botões e Texto-Áreas -Dropdown boxes -Suspenso de caixas -Listbox -Scrollbars embedded within Text-Areas Embutido dentro scrollbars-Texto-Áreas -Menus -Using multiple windows (Toplevels) Utilizando-múltiplas janelas (Toplevels) -Outro
INTRODUCTION: INTRODUÇÃO: People always assume perl to be a simple scripting language with basic acess to web scripting, however this is not so. Pessoas de ser perl Semper assumir uma linguagem simples com base acesso à web scripting, no entanto, não é assim.Perl is so much more, and with the use of user-written modules can have amazing capabilities on a variety of topics. Perl é muito mais, e com o uso de módulos escritos por usuários podem ter capacidades surpreendentes sobre uma variedade de tópicos. In this article i'll show you how to make use of the Perl::Tk module to create event-orientated GUI applications. Neste artigo eu vou mostrar-lhe como fazer uso do Perl:: Tk módulo para criar aplicações GUI orientados para o evento.
NOTES ON GLOBAL AND LOCAL VARIABLES: Notas sobre variáveis globais e locais: Before we begin, you'll notice most variables have 'my' in front of them. Antes de começar, você vai observar mais variáveis têm 'meu' na frente delas.This is to make the variables 'local'. Isto está a tornar as variáveis' local '.This means that if a variable has 'my' in front of it, it will only be able to be used in the function that it's in. This means that you can use many variables with the same names in different functions as long as you declare them to be 'local'. Isto significa que se tenha uma variável 'meu' na frente dela, ela só será capaz de ser utilizado na função que é polegadas Isso significa que você pode usar diversas variáveis com o mesmo nome em diferentes funções, desde que você declare ser-lhes que 'local'.In perl, it is not an error to redeclare a variable, so make sure you know whether you want variables to be 'local' or 'global'. Em perl, não é um erro para redeclare uma variável, por isso, certifique-se de saber se você quer variáveis a 'local' ou 'global'.Global means the variable can be acessed and used by all functions. Global significa a variável Acessed e pode ser utilizado por todas as funções.To make a variable 'global' just omit the 'my' in front of it. Para fazer uma variável 'global' basta omitir o 'meu' na frente dela.
MAINWINDOW/WIDGET AND ARGUMENT SYNTAX: MAINWINDOW / widget argumento e sintaxe: Good, now with that out the way we can begin. Bom, agora com a maneira que nós podemos começar. To make your main window, you need to assign it a variable so that it can incorporate widgets (Things like labels, buttons etc). Para tornar a sua janela principal, é necessário atribuir-lhes uma variável para que ele possa integrar widgets (Coisas como marcadores, botões etc).And all widgets need to be assigned to a variable so that you can access them. E todos os elementos têm de ser atribuído a uma variável para que você possa acessá-los. To make a new mainwindow and assign it to a variable you follow this syntax: Para fazer uma nova mainwindow e associá-lo a uma variável que você siga esta sintaxe: CODE : CÓDIGO:
$mainwindow=new MainWindow();mainwindow $ = new MainWindow ();
To make a new widget and assign it to a variable you folow this syntax: Para fazer um novo item e associá-lo a uma variável você folow esta sintaxe: CODE : CÓDIGO:
widgets can take as many arguments as they can allow, and arguments follow this syntax and are separated by commas: widgets podem ter tantos argumentos como estes podem permitir, e siga essa sintaxe e argumentos são separados por vírgulas: CODE : CÓDIGO:
-argument=>value,-argumento => valor,
There are many, many widgets available so in this article i'll only cover a few most commonly used ones. Há muitos, muitos widgets disponíveis para que neste artigo eu vou cobrir apenas a alguns mais comumente utilizado.
GEOMETRY MANAGERS: GEOMETRIA Gerentes: Geometry managers are how your Mainwindow is formatted to accommodate all of your widgets. Geometria como seus gestores são Mainwindow está formatado para acomodar todos os seus widgets. The four types of most commonly-used geometry managers are: pack(), grid(), place() and form(). Os quatro tipos de mais comumente usado geometria-gerentes são: pack (), grade (), local () e forma (). pack(): A geometry manager to pack widgets into a window by filling the widget in certain positions in a certain order or in order of declaration. pack (): A geometria gerente de embalar widgets em uma janela, preenchendo o widget em determinadas posições, em um certo sentido ou no fim da declaração. grid(): A geometry manager to arrange all of your widgets into an imaginary 'grid'. grid (): A geometria gerente de prover todos os seus widgets em um imaginário 'grelha'.so all you widgets are positioned in a cell according to a row/column. de modo que todos os widgets são posicionados em uma célula, de acordo com uma linha / coluna. place():A geometry manager to situate widgets at given x,y co-ordinates. lugar (): A geometria gerente widgets para situar em dado x, y coordenadas. form(): A geometry manager that combines use of pack() and place() to create a very powerful method of arranging your Tk window. forma (): A geometria que combina a utilização do gerenciador pack () e local () para criar um método muito poderoso de providenciar o seu Tk janela.
I almost always use grid(), simply because it's very simple to learn and accommodate for all uses and very powerful for simple or advanced applications. Eu quase utilização grid (), simplesmente porque é muito simples de aprender e para acomodar todos os usos, e muito poderoso para aplicações simples ou avançada.However if you are creating a large-scale perl Tk GUI app (unlikely) you should probably use place() or form(). No entanto, se você está criando um grande escala perl Tk GUI app (pouco provável), você provavelmente deve usar local () ou forma ().For smaller apps pack() or grid() are just fine. Para os mais pequenos aplicativos pack () ou grade () estão muito bem.Because this is a beginners guide- I will only show you the use of grid().The basic arguments for grid include: Como este é um iniciante guia-me só irá mostrar-lhe a utilização da grelha (). Os argumentos básicos de rede incluem: -row=>x, -linha => x, -column=>x, -coluna => x, -rowspan=>x, (how many rows should accommodate widget) -rowspan => x, (quantas linhas devem acomodar widget) -columnspan=>x, (how many columns should accommodate widget) -columnspan => x, (quantas colunas deve acomodam widget) -sticky=>x, (used to stick to the side of the cell the widget is postioned in, the value can be 'n','s','e','w','ne','nw','ns','se','sw','ew'. For 'ns' and 'ew' it will stretch the widget in that direction to fit the cell). colante => x, (usado para agarrarem ao lado da célula em postioned o widget é, o valor pode ser 'n', 's',' e ',' w ',' ne "," nw ', 'ns',' se ',' sw ',' ew '. Para' ns' e 'ew' vai esticar o widget nessa direcção para caber na célula). There are more arguments, which you can read up about, but those are the only neccessary basics. Há mais argumentos, que você pode ler-se sobre, mas essas são as únicas bases necessárias.
STRUCTURE OF A PERL TK PROGRAM: A estrutura do programa perl TK: All perl Tk applications are structured as follows: Todos perl Tk aplicações são estruturadas da seguinte forma: CODE : CÓDIGO:
GUI building codeGUI edifício código
MainLoop;Mainloop;
functions and subroutinesfunções e sub-rotinas
All perl Tk applications MUST have a 'MainLoop', otherwise they won't work. Todos os pedidos perl Tk deve ter um 'mainloop », caso contrário eles não irão funcionar.MainLoop; separates the GUI building code from the subroutines and functions that get called by user-interaction with the widgets when run. Mainloop; separa o código da GUI edifício sub-rotinas e funções que buscar chamado pelo usuário, interação com os widgets quando executado.Above MainLoop; you write all GUI building code, the mainwindows, the frames, the widgets. Mainloop acima, você escreve todas GUI edifício código, o mainwindows, os quadros, os widgets.Below the MainLoop; you have all functions and subroutines that get called by user-interaction. Abaixo do mainloop; você tem todas as funções e sub-rotinas que buscar chamado pelo usuário-interação.
COMMON WIDGETS AND WIDGET ARGUMENTS: Comum e widgets widget argumentos: Below are a few of the most commonly used widgets in GUI applications, please note that capitaliasation is important: Abaixo estão alguns dos mais comumente usados em widgets aplicações GUI, observe que capitaliasation é importante:
Label() -display some text Label ()-exibir algum texto Button() -display a button (duh) Button ()-exibir um botão (duh) Entry() -display a field to enter text Entrada ()-visualização de um campo para digitar texto Text() -display a textarea Texto ()-exibir um textarea Menu() -configure a menu for you application Menu ()-configurar um menu para você candidatura Optionmenu() -display a drop-down box of options Optionmenu ()-exibir um drop-down da caixa de opções ProgressBar() -display a graphical aid of progress completed (loading bar etc) Progressão ()-visualização gráfica de uma ajuda de progresso concluída (carregamento barra etc) getOpenFile() -displays the default navigation window to a location and file to open getOpenFile ()-padrão exibe a janela de navegação e localização para um ficheiro para abrir getSaveFile() -displays the default navigation window to a location and file to save getSaveFile ()-padrão exibe a janela de navegação e localização de um arquivo para salvar Scrollbar() -displays a scroll bar to be embedded into a text-area or other compatible widget Barra ()-exibe uma barra de rolagem para ser encaixado em uma área de texto ou outros compatíveis widget
Below are some arguments that can be used with most widgets: Abaixo estão alguns argumentos que podem ser usados com a maioria dos widgets: -bg=>'x', or -background=>x, Can take arguments as 'black' or '#000000' etc -bg => 'x', ou de fundo => x, é possível ter argumentos como 'negros' ou' # 000000 'etc -fg=>x, or -foreground=>x, Same follows as background -fg => x,-ou preexistentes => x, Same segue como fundo -activebackground=>'x', or '#000000' etc. Colour of background when cursor is hovering over it. -activebackground => 'x', ou '# 000000' etc Cor de fundo quando o cursor é pairar sobre ela. -activeforegroud=>'x', or '#000000' etc. Colour of foreground when cursor is hovering over it. -activeforegroud => 'x', ou '# 000000' etc Cor do primeiro plano quando o cursor é pairar sobre ela. -text=>"x", -text => "x", -width=>x, -width => x, -height=>x, -height => x, -command=>\&subfunction, or -command=>sub{statements;}, -comando => \ & subfunction, ou-comando => sub (declarações;), -variable=>\$var, -variável => \ $ var,
CONFIGURING WIDGETS: CONFIGURAR widgets: Once widgets have been initialised, you can change or configure the widget without having to create it again. Depois widgets foram inicializadas, você pode alterar ou configurar o widget, sem ter que criá-la novamente.You do this as follows: Você faz isso como se segue: CODE : CÓDIGO:
$widgetvar->configure(re-declare arguments you want to change);$ widgetvar-> configure (re declarar argumentos que pretende alterar);
Some widgets allow the program to enter information as well as the user, widgets such as a textarea or an entry field. Alguns widgets permite que o programa, bem como introduzir informação do utilizador, widgets, como uma textarea ou uma entrada campo.This is done as follows: Isso é feito da seguinte forma: CODE : CÓDIGO:
$widgetvar->insert('postion',"to insert");$ widgetvar-> insert ( 'posição' ", para inserir");
The position can be numerical- 1.0 for the beginning etc, or text- 'end' etc. A posição pode ser numérico-1,0 para o início etc, em texto ou 'final' etc
EXAMPLE OF A PERL TK APPLICATION: Um exemplo de aplicação perl TK: Ok, here I will show you how to use what you know and create a basic perl tk application. Ok, aqui vou mostrar-lhe como utilizar o que sabe e criar uma base perl tk pedido.This following example will show you how make a window, add basic widgets, and collected widget data with the use of get() inside of a subroutine. Este seguinte exemplo irá mostrar-lhe como fazer uma janela, adicionar widgets básicos, e widget dados coletados com o uso de buscar () dentro de uma subrotina. CODE : CÓDIGO:
use Tk;Tk utilização; my $mw=new MainWindow();my $ mw = new MainWindow (); my $frm=$mw->Frame()->grid();my $ frm = $ mw-> Frame () -> grade (); my $label=$frm->Label(-text=>"Enter your name:")->grid(-row=>0,-column=>0,-sticky=>'w');my $ label = $ frm-> Label (-text => "Digite seu nome :")-> grid (-linha => 0, de coluna => 0, colante => 'w'); my $entrybox=$frm->Entry()->grid(-row=>0,-column=>1);my $ entrybox = $ frm-> Entrada () -> grade (-linha => 0, de coluna => 1); my $gobutton=$frm->Button(-text=>"go",-command=>\&function1)->grid(-row=>0,-column=>2,-sticky=>'e');my $ gobutton = $ frm-> Button (-text => "ir",-comando => \ & function1) -> grade (-linha => 0, de coluna => 2, colante => 'e'); my $textarea=$frm->Text(-width=>30,-height=>5)->grid(-row=>2,-column=>0,-columnspan=>3);my $ textarea = $ frm-> Texto (-width => 30,-height => 5) -> grade (-linha => 2, de coluna => 0,-columnspan => 3); MainLoop;Mainloop; sub function1{sub function1 ( my $name=$entrybox->get();my $ name = $ entrybox-> get (); $textarea->insert('end',"Hello $name\n");$ textarea-> inserir ( "fim", "Olá $ nome \ n"); })
ANATOMY OF EXAMPLE APPLICATION: Anatomia exemplo de aplicação: line 1: Tells compiler that we need to use the Tk module. Linha 1: Indica compilador que precisamos de utilizar o módulo Tk. line 2: Creates a new Tk window and binds it to a variable. Linha 2: Cria uma nova janela Tk e vincula-lo para uma variável. line 3: Creates a new frame to hold widgets and stores the frame inside our new window. Linha 3: Cria uma nova moldura para manter widgets e armazena a moldura dentro nossa nova janela. line 4: Creates a label to dislay text, places it to grid co-ords and places the label inside of our frame. Linha 4: Cria um rótulo para dislay texto, coloca-grade para co-ords e coloca o rótulo dentro do nosso quadro. line 5: Creates an entry field to input text, places it to grid co-ords and places the entry inside of our frame. Linha 5: Cria uma entrada campo para introduzir texto, coloca-grade para co-ords e coloca a entrada no interior da nossa moldura. line 6: Creates a button to display text and initiate our subroutine, places it to grid co-ords and places the button inside of our frame. Linha 6: Cria um botão para exibir texto e iniciar a nossa sub-rotina, coloca-grade para co-ords e coloca o botão dentro do nosso quadro. line 7: Creates a text-area to dislay text given to it, places it to grid co-ords and places the text area inside of our frame. linha 7: Cria uma área de texto para dislay texto que lhe é dado, coloca-grade para co-ords e coloca o texto dentro da nossa área moldura. line 8: Signifies GUI base-building code complete. Linha 8: significa GUI base de construção de código completo. line 9: Creates subroutine "function1". Linha 9: Cria subrotina "function1". line 10:Uses get() to collect data from entrybox and saves it into variable $name. Linha 10: Utiliza get () para recolher dados de entrybox e salva-lo na variável $ nome. line 11:Inserts "helo $name" into our text-area widget. Linha 11: Insere "helo $ name" em nosso texto-área widget. line 12:Ends subroutine "function1". Linha 12: Termina subrotina "function1".
EXAMPLE PROGRAMS USING DIFFERENT WIDGETS: Exemplo programas usando widgets diferentes: Here are a few very short programs making use of some of the widgets we've talked about. Aqui estão alguns programas que utilizam muito curto de alguns dos elementos que tenhamos falou.
==Label, Entry Fields, Buttons and Text-Areas: == Label, entrada Campos, Botões e Texto-Areas: See "Example of a perl Tk application" above. Consulte "Exemplo de uma aplicação perl Tk" acima.
==Dropdown boxes: == Suspenso de caixas: CODE : CÓDIGO:
use Tk;Tk utilização;
my $mw=new MainWindow;my $ mw = new MainWindow; my $frm=$mw->Frame()->grid();my $ frm = $ mw-> Frame () -> grade (); my $lab=$frm->Label(-text=>"Choose option:")->grid(-row=>0,-column=>0);my $ $ frm-lab => Label (-text => "Escolha a opção :")-> grid (-linha => 0, de coluna => 0); my $dropdownbox=$frm->Optionmenu(-options=>["Male", "Female"],-variable=>\$var)->grid(-row=>1,-column=>0);my $ dropdownbox = $ frm-> Optionmenu (-opções => [ "Homens", "Mulheres"],-variável => \ $ var) -> grade (-linha => 1, de coluna => 0); my $txt=$frm->Text(-width=>20,-height=>10)->grid(-row=>2,-column=>0);my $ txt = $ frm-> Texto (-width => 20,-height => 10) -> grade (-linha => 2, de coluna => 0); my $button=$frm->Button(-text=>"Go",-command=>\&maleorfemale)->grid(-row=>3,-column=>0);my $ botão = $ frm-> Button (-text => "Go",-comando => \ & maleorfemale) -> grade (-linha => 3, coluna de => 0); MainLoop;Mainloop; sub maleorfemale {sub maleorfemale ( if($var eq 'Male'){$txt->insert('end',"You are Male")}else{$txt->insert('end',"You are female")}if ($ var eq 'Homens') ($ txt-> inserir ( "fim", "Você é do sexo masculino")) else ($ txt-> inserir ( "fim", "Você é mulher")) })
==Listbox: == Listbox: CODE : CÓDIGO:
use Tk;Tk utilização; my $mw=new MainWindow();my $ mw = new MainWindow (); my $frm=$mw->Frame()->grid();my $ frm = $ mw-> Frame () -> grade (); my $lab=$frm->Label(-text=>"Gender:")->grid(-row=>0,-column=>0);my $ $ frm-lab => Label (-text => "Sexo :")-> grid (-linha => 0, de coluna => 0); my $lst=$frm->Listbox(-selectmode=>'single',-width=>30,-height=>5)->grid(-row=>1,-column=>0);my $ lst = $ frm-> Listbox (-Escolher modo => 'único',-width => 30,-height => 5) -> grade (-linha => 1, de coluna => 0); my $but=$frm->Button(-text=>"Go",-command=>\&button_push)->grid(-row=>2,-column=>0);mas o meu $ = $ frm-> Button (-text => "Go",-comando => \ & button_push) -> grade (-linha => 2, de coluna => 0); my $txt=$frm->Text(-width=>30,-height=>5)->grid(-row=>3,-column=>0);my $ txt = $ frm-> Texto (-width => 30,-height => 5) -> grade (-linha => 3, coluna de => 0); $lst->insert('end',"Male");$ lst-> inserir ( "fim", "Homem"); $lst->insert('end',"Female");$ lst-> inserir ( "fim", "Mulheres"); MainLoop;Mainloop;
sub button_push{sub button_push ( my $selected=$lst->curselection();my $ selecionado = $ lst-> curselection (); my $gender=$lst->get($selected);my $ sexo = $ lst-> get ($ selecionado); $txt->insert('end',"You selected $gender.\n");$ txt-> inserir ( "fim", "Você seleccionou $ gênero. \ n"); })
==Scrollbars embedded within Text-Areas: == Scrollbars embutidos dentro de Texto-Areas: CODE : CÓDIGO:
my $mw=new MainWindow();my $ mw = new MainWindow (); my $frm=$mw->Frame()->grid();my $ frm = $ mw-> Frame () -> grade (); my $but=$frm->Button(-text=>">>Click to open a toplevel window<<",-command=>\&toplevel)->grid(-row=>1,-column=>0);mas o meu $ = $ frm-> Button (-texto =>">> Clique para abrir uma janela TopLevel <<",- comando => \ & TopLevel) -> grade (-linha => 1, de coluna => 0) ;
MainLoop;Mainloop;
sub toplevel{sub TopLevel ( my $toplevel=new MainWindow();my $ TopLevel MainWindow = new (); my $toplevelfrm=$toplevel->Frame()->grid();my $ toplevelfrm = $ TopLevel-> Frame () -> grade (); my $lab=$toplevelfrm->Label(-text=>"A Toplevel window!")->grid(-row=>1,-column=>0);my $ $ toplevelfrm-lab => Label (-text => "Uma janela TopLevel !")-> grid (-linha => 1, de coluna => 0); MainLoop;Mainloop; })
OUTRO: Well, that's it- Hope you enjoyed this beginners guide, I might write later articles covering slightly more complex areas of Perl Tk programming Bem, é isso Espero que tenha gostado-novatos neste guia, eu poderia escrever mais tarde um pouco mais complexo artigos abrangendo áreas de programação Perl Tk
Cast your vote on this article Elenco seu voto sobre este artigo *Note: the order of the votes has been reversed. * Nota: a ordem das votações foi revertida.
frag4lot - 03:59 am Tuesday January 15th, 2008frag4lot - 03h59 terça-feira 15 de janeiro de 2008
weird, I was just looking in which language i\'d write an app for a company in,.. estranho, eu estava olhando na qual idioma i \ 'd escrever um aplicativo para uma empresa em, ..might just aswell do it in perl :D poderia muito bem fazê-lo em perl: D
gj on this tutorial ;) jv sobre este tutorial;)
eljonto - 04:26 am Tuesday January 15th, 2008eljonto - 04h26 terça-feira 15 de janeiro de 2008
Thanks :) Obrigado:) Its really simple and ultra-fast to code for small-time apps, although for larger-scale apps and apps that rely heavily on speed and performance, I wouldn't use perl- but I wrote this article anyway to show perl's contrast. Seu realmente simples e ultra-rápido de código em tempo de aplicativos para pequenas, apesar de maior escala e apps apps que dependem fortemente da velocidade e performance, eu não iria usar perl-mas mesmo assim eu escrevi este artigo para mostrar o contraste da perl.
liuyuan - 11:57 am Tuesday January 15th, 2008liuyuan - 11:57 terça-feira 15 de janeiro de 2008
I\'m quite impressed by this article, a good read. I \ 'estou bastante impressionado com esse artigo, uma boa leitura.
eljonto - 04:22 pm Tuesday January 15th, 2008eljonto - 04:22 hs terça-feira 15 de janeiro de 2008
thanks liuyuan :) graças liuyuan:)
Kage - 02:56 pm Thursday February 07th, 2008Kage - 02:56 hs Quinta-feira fevereiro 07o, 2008
I\'ve used Perl for around a decade now, and never written a GUI for any of my applications (I\'ve known about the Tk modules, but never tried \'em). I \ 've Perl utilizado por cerca de uma década que passou, e nunca escreveu um GUI para qualquer um dos meus pedidos (I \' ve sabe sobre o Tk módulos, mas nunca tentei \ eles).A very good article, indeed. Um artigo muito bom, aliás.May just have to try this. Só tem que tentar maio deste.
eljonto - 04:25 am Friday February 08th, 2008eljonto - 04h25 Sexta-feira 08 de fevereiro de 2008
thanks, very easy to get the hang of obrigado, muito fácil de obter o jeito de
eljonto - 12:39 am Wednesday March 19th, 2008eljonto - 12:39 am quarta-feira 19 de março de 2008
thanks for the constructive comment 'clever' hacker agradecimentos para o comentário construtivo 'inteligente' hacker
fookyourshist - 07:45 pm Monday April 14th, 2008fookyourshist - 07:45 hs Segunda-feira 14 de abril de 2008
Thats Awsome, it looks a bit similar to python's gui: jython. Thats Awsome, ela parece um pouco semelhante a python's gui: Jython.Neat tutorial man! Neat tutorial cara! xDDDD
eljonto - 02:56 am Tuesday April 22nd, 2008eljonto - 02h56 terça-feira 22 de abril de 2008
Thanks, as far as I know python also has its own Tk module which i would imagine being similar to perls Obrigado, tanto quanto sei python também tem o seu próprio módulo Tk que eu imagino ser semelhante a Perls
This site is the collective work of the HackThisSite staff. Este site é o trabalho coletivo da equipe HackThisSite.Please don't reproduce in part or whole without permission. Por favor, não reproduzir, total ou parcial, sem a sua permissão. Page Generated: Mon, 01 Dec 2008 23:55:13 -0500 Exec: 10 Página Criado em: Mon, 01 dezembro 2008 23:55:13 -0500 Exec: 10 Page loaded in 0.11908 seconds!Página carregada em 0,11908 segundos!
weird, I was just looking in which language i\'d write an app for a company in,.. estranho, eu estava olhando na qual idioma i \ 'd escrever um aplicativo para uma empresa em, .. might just aswell do it in perl :D poderia muito bem fazê-lo em perl: D
gj on this tutorial ;) jv sobre este tutorial;)