Jul 05 17:07:56 ok session starts Jul 05 17:07:58 roll call Jul 05 17:08:07 rana amit Jul 05 17:08:07 Samikshan Bairagya Jul 05 17:08:13 Koustava Goswami Jul 05 17:08:28 thanks Jul 05 17:08:43 mkpai, is our guest lecturer today Jul 05 17:08:51 Tirtha Chatterjee Jul 05 17:09:02 Bamacharan Kundu Jul 05 17:09:19 mkpai, stage is yours , you can start Jul 05 17:09:27 Hello Jul 05 17:09:35 hi mkpai Jul 05 17:09:40 Hello Jul 05 17:09:41 I plan to take you through the basics of Perl Jul 05 17:09:44 hello Jul 05 17:09:54 mkpai, hello Jul 05 17:10:25 Perl: Practical Extraction and Reporting Language Jul 05 17:10:32 It was created by Larry Wall to work around the limitations of traditional Jul 05 17:10:39 UNIX text processing tools like awk, sed and grep. Jul 05 17:10:54 it evolved into a full programming language Jul 05 17:11:13 with a distinct philosophy :) Jul 05 17:11:21 Larry was trained to be a missionary, and studied linguistics. These Jul 05 17:11:26 influences are seen in his book "Programming Perl", which is also called Jul 05 17:11:32 the "camel book" because O'Reilly put a camel on the cover. Jul 05 17:11:55 This is a really good book even for non-programmers Jul 05 17:12:01 The first edition of the camel book has hilarious sections on how Jul 05 17:12:08 Biblical characters from the Old Testament could use Perl to solve their Jul 05 17:12:14 problems. Larry actively promotes the attitude of not taking oneself Jul 05 17:12:19 seriously. The basic attitude of the Perl programmer is "TIMTOWTDI" Jul 05 17:12:26 or There Is More Than One Way To Do It. Jul 05 17:12:37 This is in marked contrast to most programming languages where there is Jul 05 17:12:42 one correct way to do things and all other ways are wrong. Larry feels Jul 05 17:12:47 that if you can complete your assignment before your boss fires you, Jul 05 17:12:52 your solution is correct :) Jul 05 17:12:58 so Jul 05 17:13:07 thats why theres more than one way to do it Jul 05 17:13:18 Larry also says that a great programmer should have 3 virtues Jul 05 17:13:24 i. Laziness Jul 05 17:13:29 this means Jul 05 17:13:34 Write code that can be re-used Jul 05 17:13:42 and also Jul 05 17:13:44 Write code that can be read and understood Jul 05 17:13:56 ii. Impatience Jul 05 17:14:01 Write programs that anticipate needs - not just react to needs Jul 05 17:14:08 iii. Hubris Jul 05 17:14:24 which is excessive pride Jul 05 17:14:26 Write programs that you will be proud of showing others Jul 05 17:14:34 BUT Jul 05 17:14:39 Its OK if you miss one or two :) Jul 05 17:14:58 * praveenkumar has quit (Ping timeout: 252 seconds) Jul 05 17:14:59 Brief intro to how I started to use Perl Jul 05 17:15:08 I came to Perl for reasons very similar to Larry Wall's. I was writing Jul 05 17:15:13 an application in which I needed to open different files based on Jul 05 17:15:18 different conditions. I couldn't do that in awk. Later I found that I Jul 05 17:15:26 could express my ideas quickly and correctly in Perl, so I stayed. Jul 05 17:15:57 with the philosophy out of the way, lets get to the fun bit Jul 05 17:16:26 any questions so far ? lets wait for 1 minute before proceeding ... Jul 05 17:17:26 mkpai, no. Jul 05 17:17:37 ok, so we'll go on Jul 05 17:17:47 The mandatory Hello World program Jul 05 17:17:58 please run the command Jul 05 17:18:14 which perl Jul 05 17:18:18 in a terminal Jul 05 17:18:23 do you get Jul 05 17:18:27 /usr/bin/perl Jul 05 17:18:28 ? Jul 05 17:18:39 yes Jul 05 17:18:41 yes mkpai Jul 05 17:18:44 mkpai, yes Jul 05 17:18:49 yes mkpai Jul 05 17:18:51 ah ok Jul 05 17:19:12 yes Jul 05 17:19:18 * kishan (~kishan@110.227.80.60) has joined #dgplug Jul 05 17:19:21 I'll write a Perlm program - please save it to /tmp/hello.pl Jul 05 17:19:32 print "Hello World\n"; Jul 05 17:19:47 Save this line to /tmp/hello.pl and run Jul 05 17:19:53 /usr/bin/perl /tmp/hello.pl Jul 05 17:20:16 as you can see, the basic program is really basic Jul 05 17:20:22 but it works Jul 05 17:20:31 no imports/includes Jul 05 17:20:52 it only expects the statement-terminator to be a ; Jul 05 17:20:56 a semi-colon Jul 05 17:21:09 with me so far ? Jul 05 17:21:32 yes mkpai Jul 05 17:21:33 mkpai, yes Jul 05 17:21:36 ok Jul 05 17:21:41 yes Jul 05 17:21:49 mkpai yes Jul 05 17:21:55 then lets move on the basic variable types in Perl Jul 05 17:22:00 mkpai, yes Jul 05 17:22:21 The concept of variables in Perl is slightly different from other Jul 05 17:22:26 languages. Other languages want the programmer to think in terms of int, Jul 05 17:22:32 float, char etc. But Perl wants you to think in terms of singular Jul 05 17:22:38 or plural. Jul 05 17:22:44 Larry is a linguist - so he created the language to imitate the way we Jul 05 17:22:49 think. We don't set variable types we think. So why should our programs Jul 05 17:22:55 force us to ? Jul 05 17:23:36 so, Larry radically simplified the idea of a variable. And he did this in the Jul 05 17:23:40 early 1980s Jul 05 17:23:54 Singular variables are called scalars. Plurals can be either lists Jul 05 17:24:00 Singular variables are called scalars. Plurals can be either lists Jul 05 17:24:06 or hashes. Jul 05 17:24:31 I am now going to wite a simple program to demo what is meant by scalar Jul 05 17:24:43 please save in /tmp/scalar.pl Jul 05 17:24:51 * samxan has quit (Read error: Connection reset by peer) Jul 05 17:24:53 $a = 1; Jul 05 17:24:58 $b = "hello world"; Jul 05 17:25:04 print "a is $a while b is $b\n"; Jul 05 17:25:21 now run this program with Jul 05 17:25:34 /usr/bin/perl /tmp/scalar.pl Jul 05 17:25:53 done ? Jul 05 17:26:01 any errors ? Jul 05 17:26:25 * samxan (~samxan@59.93.216.237) has joined #dgplug Jul 05 17:26:52 samxan: should I paste the buffer again for you ? Jul 05 17:26:52 no error mkpai Jul 05 17:27:05 ok done mkpai Jul 05 17:27:18 mkpai, yes Jul 05 17:27:25 ah ok, samxan Jul 05 17:27:39 $a = 1; Jul 05 17:27:41 mkpai, sorry got disconnected,network problems Jul 05 17:27:46 $b = "hello world"; Jul 05 17:28:06 I saw - maybe the netwoirk is also observing bharat bandh :) Jul 05 17:28:15 print "a is $a while b is $b\n"; Jul 05 17:28:27 mkpai, :D Jul 05 17:28:53 * wyuka_ (~wyuka@117.254.229.79) has joined #dgplug Jul 05 17:28:56 samxan: just 3 lines Jul 05 17:29:17 pls put them in /tmp/scalar.pl and run it as Jul 05 17:29:21 * wyuka has quit (Ping timeout: 265 seconds) Jul 05 17:29:26 /usr/bin/perl /tmp/scalar.pl Jul 05 17:30:13 now wyuka seems to have dropped off Jul 05 17:30:20 mkpai, you can go ahead Jul 05 17:30:25 ah ok Jul 05 17:30:26 * wyuka_ has quit (Read error: Connection reset by peer) Jul 05 17:30:31 done samxan ? Jul 05 17:31:13 mkpai, yes Jul 05 17:31:18 ok Jul 05 17:31:21 * kishan_ (~kishan@110.227.92.94) has joined #dgplug Jul 05 17:31:29 In this programs $a and $b are scalars. As you can see immediately, Jul 05 17:31:35 there is no concept of numeric values etc. A scalar is a variable that Jul 05 17:31:35 * tazz (~gaurav.c@triband-mum-120.60.135.228.mtnl.net.in) has joined #dgplug Jul 05 17:31:40 stores a single value. That can be a number, word or whatever. Jul 05 17:32:07 * pranay_09 (dce15098@gateway/web/freenode/ip.220.225.80.152) has joined #dgplug Jul 05 17:32:14 just remember this - a scalar contains a single value and is denoted by $ Jul 05 17:32:29 hence $a, $b etc Jul 05 17:32:52 mkpai, ok Jul 05 17:32:55 As long as there is a $ at the beginning of the variable name, its a scalar Jul 05 17:33:06 Now lets move to the idea of plural. Jul 05 17:33:12 What do you mean by "plural" anyway ? Plural means a list of singulars, right ? Jul 05 17:33:19 Thats why the simplest plural is called the "list". Jul 05 17:33:36 so the list is the second basic variable type in Perl Jul 05 17:33:51 pls save this program to /tmp/lists.pl Jul 05 17:34:00 @a = (1, "hello class", 2, 5, 6); Jul 05 17:34:06 print "a is a list. Also called array\n"; Jul 05 17:34:12 print "The first element is ",$a[0], "\n"; Jul 05 17:34:15 * wyuka_ (~wyuka@117.254.234.242) has joined #dgplug Jul 05 17:34:18 print "a has $#a elements in it,if you count from 0, not 1\n"; Jul 05 17:34:23 print "The last element is $a[$#a]\n"; Jul 05 17:34:29 thats it Jul 05 17:34:51 5 lines to be saved to /tmp/lists.pl Jul 05 17:34:54 * kishan has quit (Ping timeout: 265 seconds) Jul 05 17:34:59 now run it as Jul 05 17:35:11 * bamachrn_ (~bamachrn@27.248.200.245) has joined #dgplug Jul 05 17:35:13 /usr/bin/perl /tmp/lists.pl Jul 05 17:35:18 done ? Jul 05 17:37:00 * bamachrn has quit (Ping timeout: 276 seconds) Jul 05 17:37:35 mkpai, sorry i got disconnected :( Jul 05 17:37:37 mkpai,it is showing many things Jul 05 17:37:49 kushal, do you archive the irc logs for later reference ? Jul 05 17:38:00 mkpai, yes Jul 05 17:38:11 mkpai, yes done Jul 05 17:38:11 koustava, any errors ? Jul 05 17:38:22 mkpai,yes Jul 05 17:38:27 koustava: can you paste what you get ? Jul 05 17:38:36 one minute Jul 05 17:38:46 lets fix that before going on Jul 05 17:39:02 mkpai, ! Jul 05 17:39:09 http://fpaste.org/saC9/ Jul 05 17:39:09 samxan, yes Jul 05 17:39:35 koustava, fpaste your code Jul 05 17:39:39 a[0] is a scalar...so we denote it as $a[0]? Jul 05 17:40:00 heh works fine in windows 7 :) Jul 05 17:40:08 yes, samxan - coming to that :) Jul 05 17:40:27 koustava, can you paste your line 3 in /tmp/lists.pl ? Jul 05 17:40:45 tazz: glad to know that :O) Jul 05 17:41:20 it should be Jul 05 17:41:23 print "The first element is ",$a[0], "\n"; Jul 05 17:41:30 mkpai,http://fpaste.org/1gc2/ Jul 05 17:42:13 koustava: you wrote: print"the first element is$a[0]'"\n"; Jul 05 17:42:37 mkpai,yes Jul 05 17:42:37 koustava: You need to write print "The first element is ",$a[0], "\n"; Jul 05 17:43:11 there is a ", between is and $a[0] Jul 05 17:43:21 ok Jul 05 17:43:26 done mkpai Jul 05 17:43:29 ah good Jul 05 17:43:49 beware: we are soon getting to the homework bit ... Jul 05 17:43:58 and it will make your head explode ... Jul 05 17:44:00 :) Jul 05 17:44:20 mkpai, could it have been print "the first element is $a[0] \n"; ? Jul 05 17:44:34 wyuka: yes it could be Jul 05 17:44:41 mkpai,I got it Jul 05 17:44:49 this brings up a very nice thing about Perl Jul 05 17:44:51 mkpai,done Jul 05 17:44:59 its sensitive to context Jul 05 17:45:18 so here the print function is receiving a list context Jul 05 17:45:28 the first element of this list is Jul 05 17:45:31 * bamachrn_ is now known as bamachrn Jul 05 17:45:38 "The first element is " Jul 05 17:45:51 the second element of the list is Jul 05 17:45:53 $a[0] Jul 05 17:46:02 the third element of the list is "\n" Jul 05 17:46:13 so you see Jul 05 17:46:27 simple lists can have profound meanings :) Jul 05 17:46:58 there is a spirituality associated with Perl - I am going to recommed a book at the end - just for that :) Jul 05 17:47:04 mkpai! Jul 05 17:47:22 back to the list @a Jul 05 17:47:39 The first element of list @a is $a[0] Jul 05 17:47:47 The second element of list @a is $a[1] Jul 05 17:47:57 now some wierdness Jul 05 17:47:58 The length of the list is $#a Jul 05 17:48:05 So the last element of the list is $a[$#a] Jul 05 17:48:43 this construct makes it easy to manipulate things in Perl Jul 05 17:49:04 you don't need to pre-allocate resources - say give me an array of size 100 Jul 05 17:49:23 you can just declare a list and Perl automatically knows what to do Jul 05 17:49:25 also Jul 05 17:49:32 a list contains scalars Jul 05 17:49:40 a scalar can be numeric or not Jul 05 17:49:47 do i ask questions now, or at the end ? Jul 05 17:49:59 tazz, if you have a question type ! Jul 05 17:50:01 so a list can contain numeric or non-numeric data Jul 05 17:50:08 go ahead Jul 05 17:50:10 ask Jul 05 17:50:16 the next section build on this Jul 05 17:50:17 koustava, you first Jul 05 17:50:24 * samxan has quit (Ping timeout: 240 seconds) Jul 05 17:50:39 how do i refer to the 2nd last element? $a[$#a-1] ? Jul 05 17:50:43 * wyuka_ has quit (Read error: Connection reset by peer) Jul 05 17:50:50 kushal,i already got my answer Jul 05 17:51:30 tazz: yes Jul 05 17:51:35 cool Jul 05 17:52:01 told you - its almost spiritual :) Jul 05 17:52:08 tazz, after your question is over type EOF to indicate the same Jul 05 17:52:22 ack Jul 05 17:52:28 ok Jul 05 17:52:42 should we proceed ? Jul 05 17:52:55 yes mkpai Jul 05 17:52:58 yes Jul 05 17:52:59 yes Jul 05 17:53:07 yes please Jul 05 17:53:08 The third basic variable in Perl is the hash. Its signified by % Jul 05 17:53:34 Save the following program to /tmp/hashes.pl Jul 05 17:53:42 %a = ( 'a' => "hello", 'b' => 1, 'c' => "world" ); Jul 05 17:53:50 print $a{'a'}, "\n"; Jul 05 17:53:56 print $a{'b'},"\n"; Jul 05 17:54:02 print $a{'c'},"\n"; Jul 05 17:54:12 now run this with Jul 05 17:54:20 /usr/bin/perl /tmp/hashes.pl Jul 05 17:54:46 done ? Jul 05 17:55:01 * wyuka (~wyuka@117.254.235.9) has joined #dgplug Jul 05 17:55:04 * samxan (~samxan@59.93.247.125) has joined #dgplug Jul 05 17:55:45 any errors ? Jul 05 17:56:07 no Jul 05 17:56:15 ok Jul 05 17:56:17 done Jul 05 17:56:26 a hash is a special kind of array Jul 05 17:56:38 done Jul 05 17:56:38 mkpai, ! Jul 05 17:56:39 in a normal list, you index the elements by number Jul 05 17:56:47 yes bamachrn Jul 05 17:56:52 whatsup ? Jul 05 17:57:00 here a is used twice Jul 05 17:57:21 bamachrn: getting to that Jul 05 17:57:24 as var name and position? Jul 05 17:57:26 Jul 05 17:57:36 ok Jul 05 17:57:38 bamachrn: if you want, you can say Jul 05 17:57:47 'foo' => "hello" Jul 05 17:57:48 * sayan (~sayan@110.227.168.80) has joined #dgplug Jul 05 17:57:53 anyhow Jul 05 17:58:04 as I said in a normal list, you index the elements by number Jul 05 17:58:23 * sayan has quit (Remote host closed the connection) Jul 05 17:58:28 so you can say - give me the 3rd element, give me the last element etc Jul 05 17:58:35 but a hash is different Jul 05 17:58:46 here, the index is a key Jul 05 17:58:56 so the key of "hello" is 'a' Jul 05 17:59:08 this 'a' has nothing to do with the name of the hash Jul 05 17:59:25 the hash could be called %mkpai :) Jul 05 17:59:42 this has some important consequences Jul 05 17:59:59 * samxan has quit (Read error: Connection reset by peer) Jul 05 18:00:00 firstly, you cannot say - give me the 3rd element of the list Jul 05 18:00:16 because there is no such thing as the 3rd element of the list Jul 05 18:00:21 you can only say Jul 05 18:00:49 give me the c'th element of the list - and you'll get "world" Jul 05 18:01:03 a hash is a list of key-value pairs Jul 05 18:01:22 * sayan (6ee3a850@gateway/web/freenode/ip.110.227.168.80) has joined #dgplug Jul 05 18:01:36 secondly, since the indexing is done via keys and not numbers, there isn't a "last" element in hash Jul 05 18:01:58 at a simple syntactic level Jul 05 18:02:14 * samxan (~samxan@59.93.201.2) has joined #dgplug Jul 05 18:02:14 in a list you use square brackets - $a[0] Jul 05 18:02:31 * bamachrn has quit (Ping timeout: 276 seconds) Jul 05 18:02:40 in a hash, you use curly braces - $a{'a'} or $a{'c'} Jul 05 18:02:46 see Jul 05 18:02:47 ? Jul 05 18:02:57 kushal: how much time do we have ? Jul 05 18:03:13 mkpai, you can go on as long as you want Jul 05 18:03:26 mkpai, no time limit if you have time Jul 05 18:03:37 ah, I have approx 10 more mins :) Jul 05 18:03:52 so Jul 05 18:04:26 pls remember that you won't be able to do Perl properly unless you understand how to do hashes Jul 05 18:04:56 people have implented a whole OOPs sub-system simply based on the concept of hashes Jul 05 18:05:00 its that important Jul 05 18:05:06 so as I said Jul 05 18:05:12 A hash is a list which contains key-value pairs. Jul 05 18:05:19 Its a list where the index is not a number, but a unique key. In the Jul 05 18:05:25 hash above, the key of "hello" is 1, the key of "world" is 'c'. Jul 05 18:05:32 the key is unique Jul 05 18:05:45 one key cannot point to more than one value Jul 05 18:06:03 ! Jul 05 18:06:11 wyuka: yes ? Jul 05 18:06:32 can a key only be a string? Jul 05 18:06:55 wyuka: no, you can use a number if you want Jul 05 18:07:06 * samxan_ (~samxan@59.93.218.171) has joined #dgplug Jul 05 18:07:09 you can even mix numbers and strings Jul 05 18:07:11 * samxan has quit (Ping timeout: 248 seconds) Jul 05 18:07:19 mkpai, and do we calculate the length of a list in same way? like $#mylist Jul 05 18:07:38 %b = ('a' => 'hello', '23' => "foo"); Jul 05 18:07:39 etc Jul 05 18:07:43 * koustava has quit (Ping timeout: 248 seconds) Jul 05 18:07:55 wyuka: you can use $#mylist Jul 05 18:08:11 but that way there is no guarantee that the same element will be last Jul 05 18:08:32 a hash can be randomly rearranged if the program is run multiple times Jul 05 18:08:40 all the elements will be there Jul 05 18:08:41 mkpai, no, i meant can we write %b = (1 => 'haha'); ? Jul 05 18:08:51 wyuka: yes Jul 05 18:09:02 * koustava (~koustava@117.201.112.196) has joined #dgplug Jul 05 18:09:03 wyuka: 1 => 'foo' is ok Jul 05 18:09:20 * sayan_ (~sayan@110.227.168.80) has joined #dgplug Jul 05 18:09:41 now that concludes the most basic lesson, Jul 05 18:09:47 now for the exercises Jul 05 18:09:58 a. write a Perl program to query a timeserver and output what the Jul 05 18:09:58 localtime is and what GMT is. Jul 05 18:10:23 b. write a chatbot that logs into an IRC network and logs out after introducing itself Jul 05 18:10:59 * bamachrn_ (79f26fc2@gateway/web/freenode/ip.121.242.111.194) has joined #dgplug Jul 05 18:11:02 these are intersting applications that you will be able to do if you skim through the refernces that I am going to give you now Jul 05 18:11:13 first and foremost Jul 05 18:11:13 * samxan (~samxan@59.93.209.78) has joined #dgplug Jul 05 18:11:15 man perl Jul 05 18:11:24 then man man perldata Jul 05 18:11:32 sorry Jul 05 18:11:36 then man perldata Jul 05 18:11:50 pls do all the example progs in these man pages Jul 05 18:11:58 all of them are about 5 lines long Jul 05 18:12:05 but they are important Jul 05 18:12:06 mkpai! Jul 05 18:12:13 yes, koustava ? Jul 05 18:12:23 * samxan_ has quit (Ping timeout: 260 seconds) Jul 05 18:12:32 I was offline...can you give me?? Jul 05 18:12:46 koustava, ask other students please Jul 05 18:12:48 * samxan has quit (Read error: Connection reset by peer) Jul 05 18:12:50 mkpai, carry on Jul 05 18:12:56 koustava: kushal will be sending you the entire chat log Jul 05 18:13:12 so those 3 manpages are the most important Jul 05 18:13:14 next Jul 05 18:13:25 sorry, I forgot the 3rd manpage Jul 05 18:13:30 man perlsyn Jul 05 18:13:49 man perl will give an overview of perl Jul 05 18:14:03 man perldata will be an intro to the perl data types Jul 05 18:14:21 man perlsyn is an intro syntax and style Jul 05 18:14:39 after this, I'd suggest the camel book which is on googlebooks Jul 05 18:14:56 http://books.google.com.au/books?id=oh8lz4A3sUsC&dq=programming+perl+by+larry+wall&printsec=frontcover&source=bn&hl=en&ei=2rExTKyVEtOQjAe6lbyWBg&sa=X&oi=book_result&ct=result&resnum=4&ved=0CCYQ6AEwAw#v=onepage&q&f=false Jul 05 18:15:25 Perl is widely used for quick tasks Jul 05 18:15:52 so there is an excellent collection of problem/solutions in the Perl Cookbook which is also on googlebooks Jul 05 18:15:58 http://books.google.com.au/books?id=IzdJIax6J5oC&printsec=frontcover&dq=programming+perl+by+larry+wall&source=gbs_similarbooks_s&cad=1#v=onepage&q=programming%20perl%20by%20larry%20wall&f=false Jul 05 18:16:02 Lastly Jul 05 18:16:09 * mbuf has quit (Quit: ERC Version 5.3 (IRC client for Emacs)) Jul 05 18:16:16 as promised Jul 05 18:16:25 if you are looking for spiritual liberation, please do read Jul 05 18:16:33 Higher-Order Perl which is available free at http://hop.perl.plover.com/ Jul 05 18:16:38 but please ask your employer/college to buy a copy. The author needs money. Jul 05 18:17:04 one more source Jul 05 18:17:39 there are some columns by famnous programmers Jul 05 18:17:46 http://www.stonehenge.com/merlyn/LinuxMag/col01.html onwards Jul 05 18:17:50 and also Jul 05 18:17:55 http://www.stonehenge.com/merlyn/PerlJournal/col01.html onwards Jul 05 18:18:05 I guess thats all for the moment ... Jul 05 18:18:12 mkpai, thank you :) Jul 05 18:18:16 ! also perl is good for any type of parsing Jul 05 18:18:24 kushal, what sthe procedure now ? Jul 05 18:18:25 mkpai, when you want to take the next session ? Jul 05 18:18:26 * mvaliyav_ (~mvaliyav@nat/redhat/x-btsqjdfpgrjrkeet) has joined #dgplug Jul 05 18:18:41 I would like to see the assignments first ... Jul 05 18:18:44 mkpai, nothing, today's session is over Jul 05 18:18:50 two weeks ? Jul 05 18:18:56 mkpai, assignments should be done before > Jul 05 18:18:58 ? Jul 05 18:19:04 2 weeks ? Jul 05 18:19:19 two weeks is too long, make it smaller, they don't have much other work Jul 05 18:19:23 1 week ? Jul 05 18:19:33 by next money Jul 05 18:19:34 ok Jul 05 18:19:38 * mondey Jul 05 18:19:38 done Jul 05 18:19:41 thanks Jul 05 18:19:44 same time Jul 05 18:19:54 thanks guys, and see you next week