tag:blogger.com,1999:blog-66640014038107895242024-02-19T05:00:19.114+02:00Perl World RomaniaNoutați despre limbajul de programare PERL mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.comBlogger20125tag:blogger.com,1999:blog-6664001403810789524.post-75971477182198583052017-11-24T11:43:00.002+02:002017-11-24T11:46:36.973+02:00Perl SDL -> Drawing<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
<b>Drawing</b></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
SDL provides several ways to draw graphical elements on the screen in three general categories: primitives, images, and text. All drawing occurs on a surface, represented by the SDLx::Surface class. Even the SDLx::App is a SDLx::Surface. Though this means it's possible to draw directly to the app's surface, there are several advantages to drawing on multiple surfaces.</div>
<div style="text-align: left;">
<b> </b></div>
<div style="text-align: left;">
<b> </b>3.1 Coordinates</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
SDL's surface coordinate system has its origin (where both the x and y coordinates have the value of zero) in the upper left corner. As the value of x increases, the position moves downward from the origin. The API always lists coordinates in x, y order.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
The SDL library documentation has an extended discussion on coordinates: <a href="http://sdltutorials.com/sdl-coordinates-and-blitting">http://sdltutorials.com/sdl-coordinates-and-blitting</a>. </div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
3.2 Drawing</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
You can produce original pictures knowing little more than how to draw to a surface with SDL. As mentioned earlier, all drawing in SDL requires a surface. The SDLx::Surface object provides access to methods in the form of :</div>
<div style="text-align: left;">
--------------------------------------------------------------------------------------------------------------------</div>
<div style="text-align: left;">
$surface->draw_{something}(.......);</div>
<div style="text-align: left;">
--------------------------------------------------------------------------------------------------------------------</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Parameters to these methods are generally coordinates and colors, provided as array referances.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<b>Rectangular Parameters</b></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Some parameters are sets of coordinate positions and dimentions. For example, parameters to describe a rectangle af 40x40 pixels placed at (20, 20) pixel units on the screen make a four element array of x, y, width, height:</div>
<div style="text-align: left;">
-----------------------------------------------------------------------------------------------------------------</div>
<div style="text-align: left;">
my $rect = [20, 20, 40, 40];</div>
<div style="text-align: left;">
-----------------------------------------------------------------------------------------------------------------</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Color</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
SDL color parameters require four-element array references. The first three numbers define the Red, Green, and Blue intensity of the color. The final number defines the transparency of the color.</div>
<div style="text-align: left;">
-------------------------------------------------------------------------------------------------------------------</div>
<div style="text-align: left;">
my $color = [ 255, 255, 255, 255];</div>
<div style="text-align: left;">
--------------------------------------------------------------------------------------------------------------------</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
The magnitude of each color value determins how much of that color component will be mixed into the resulting color. A 0 value specifies that none of the color channel should be used while 255 specifies a maximum intencity for a particular channel. The first value coresponds with the Red channel, so a higher number there means more red will be mixed into the resulting color. It is a common practice to achieve a grayscale of varying intencity by specifying the same value for each of the Red, Green, and Blue color channels. The fourth and final value designates the transparency (or Alpha channel) where a 0 value makes the resuting color fully transparent and 255 makes it entirely opaque. A trancparency value somewhare in between will allow underlying (pixel data of surfaces below the current one) colors to be blended with the specified RGB values into the final output.<br />
</div>
<div style="text-align: left;">
You may also represent a color as hexadecimal values, where the values of the numbers range from 0-255 for 32 bit depth in RGBA format:</div>
<div style="text-align: left;">
-----------------------------------------------------------------------------------------------------------------------------</div>
<div style="text-align: left;">
my $color = 0xFFFFFFFF;</div>
<div style="text-align: left;">
my $white= 0xFFFFFFFF;</div>
<div style="text-align: left;">
my $black= 0x000000FF;</div>
<div style="text-align: left;">
my $red = 0xFF0000FF;</div>
<div style="text-align: left;">
my $green=0x00FF00FF;</div>
<div style="text-align: left;">
my $blue = 0x0000FFFF;</div>
<div style="text-align: left;">
--------------------------------------------------------------------------------------------------------------------------</div>
<div style="text-align: left;">
... or as four-byte hexadecimal values, where each two-digit byte encodes the same RGBA values:</div>
<div style="text-align: left;">
--------------------------------------------------------------------------------------------------------------------------</div>
<div style="text-align: left;">
my $goldenrod = 0xDAA520FF;</div>
<div style="text-align: left;">
--------------------------------------------------------------------------------------------------------------------------</div>
<div style="text-align: left;">
The color depth of the surface-how many bits are available to describe color is a property of the relevant SDLx::Surface or SDLx::App. Set it in its constructor: </div>
<div style="text-align: left;">
-------------------------------------------------------------------------------------------------------------------------</div>
<div style="text-align: left;">
my $app = SDLx::App->new ( depth => 32, );</div>
<div style="text-align: left;">
--------------------------------------------------------------------------------------------------------------------------</div>
<div style="text-align: left;">
The default bit depth is 32, such that each color component has 256 possible values. Other options are 24, 16, and 8.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
3.2.2 Pixels</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
All SDLx::Surfaces are collections of pixels. You can read from and write to these pixels by treating the surface as an array reference:</div>
<div style="text-align: left;">
----------------------------------------------------------------------------------------------------------------------------</div>
<div style="text-align: left;">
$app->[$x][$y] = $color;</div>
<div style="text-align: left;">
----------------------------------------------------------------------------------------------------------------------------</div>
<div style="text-align: left;">
... where $color is an unsigned integer value using the hexadecimal format (0xRRGGBBAA) or un anonymous array of the form [$red, $green, $blue, $alpha].</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
3.2.3 Primitives</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Drawing primitives are simple shapes that SDL supports natively.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Lines</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
A line is a series of contiguous pixels between two points. The draw_line method causes SDL to draw a line to a sourface:</div>
<div style="text-align: left;">
-----------------------------------------------------------------------------------------------------------------------</div>
<div style="text-align: left;">
#!/usr/bin/perl<br />
<br />
use strict;<br />
use warnings;<br />
<br />
use SDL;<br />
use SDL::Event;<br />
use SDL::Events;<br />
use SDLx::App;<br />
<br />
my $app =SDLx::App->new (<br />
w => 500,<br />
h => 500,<br />
d => 32,<br />
title => 'QUIT EVENTS',<br />
exit_on_quit => 1,<br />
);<br />
<span style="background-color: yellow;"># this will draw a line from position (200, 20) to (20, 200)<br />$app->draw_line([200, 20], [20, 200], [255,255,0,255]);</span><br />
<br />
$app->run();</div>
<div style="text-align: left;">
--------------------------------------------------------------------------------------------------------------------------------</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVJ4kBiIymPe1OJQYFnCEeK3dHtQZBI2agvcilzUf1r3aLMftvYiF3b5gItAcXaTzZNEh0aD_G3c80dlxipNVt5jRmKKB-jYLlLbCzk2Dt2355h3_YbkMVSaFwHRoAagIz1VDD0taJiNvl/s1600/Screenshot+from+2017-11-24+11-23-57.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="537" data-original-width="500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVJ4kBiIymPe1OJQYFnCEeK3dHtQZBI2agvcilzUf1r3aLMftvYiF3b5gItAcXaTzZNEh0aD_G3c80dlxipNVt5jRmKKB-jYLlLbCzk2Dt2355h3_YbkMVSaFwHRoAagIz1VDD0taJiNvl/s320/Screenshot+from+2017-11-24+11-23-57.png" width="297" /></a></div>
<div style="text-align: left;">
Rectangles</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
A rectangle is a four-sides, filled polygon. Rectangles are a common building block for games. In SDL, rectangles are the most cost effective of the primitives to draw. The draw_rect method draws a rectangle on a surface:</div>
<div style="text-align: left;">
----------------------------------------------------------------------------------------------------------------------------------</div>
<div style="text-align: left;">
#!/usr/bin/perl<br />
<br />
use strict;<br />
use warnings;<br />
<br />
use SDL;<br />
use SDL::Event;<br />
use SDL::Events;<br />
use SDLx::App;<br />
<br />
my $app =SDLx::App->new (<br />
w => 500,<br />
h => 500,<br />
d => 32,<br />
title => 'QUIT EVENTS',<br />
exit_on_quit => 1,<br />
);<br />
# draw a rectangle of size 20x200 at position 200,20)<br />
$app->draw_rect([200, 20, 20, 200], [255,255,0,255]);<br />
<br />
$app->run();</div>
<div style="text-align: left;">
-------------------------------------------------------------------------------------------------------------------------</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLmzb12UyNR_xgL6PcnLpMA49EA0XGk2IBioSxLzFR6XCvZMiHdYs2LXddjWAJ_O3nLfuYtLm6oZFuJ5j6UoUVD8h4YLSaJdYO8GPd-RFpk-JVScUKFBPV5TodGh5RqfSbErfhXnnULUrK/s1600/Screenshot+from+2017-11-24+11-41-00.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="537" data-original-width="500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLmzb12UyNR_xgL6PcnLpMA49EA0XGk2IBioSxLzFR6XCvZMiHdYs2LXddjWAJ_O3nLfuYtLm6oZFuJ5j6UoUVD8h4YLSaJdYO8GPd-RFpk-JVScUKFBPV5TodGh5RqfSbErfhXnnULUrK/s320/Screenshot+from+2017-11-24+11-41-00.png" width="297" /></a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
<br /></div>
</div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0tag:blogger.com,1999:blog-6664001403810789524.post-69331739824436808532017-11-24T09:48:00.002+02:002017-11-24T09:48:18.633+02:00Perl SDL -> Handling Events<div dir="ltr" style="text-align: left;" trbidi="on">
SDL provides an event queue which holds all events that occur. <br />
---------------------------------------------------------------------------------------------------------------------------- <br />
#!/usr/bin/perl<br /><br />use strict;<br />use warnings;<br /><br />use SDL;<br />use SDL::Event;<br />use SDL::Events;<br />use SDLx::App;<br /><br />my $app =SDLx::App->new (<br /> w => 500,<br /> h => 500,<br /> d => 32,<br /> title => 'QUIT EVENTS',<br /> exit_on_quit => 1,<br />);<br /><br />$app->run();<br />----------------------------------------------------------------------------------------------------------------------------<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQKn12NA2f89za3W7s62cCOL0XZIclySBEAtrdveIkTQISxddaC0Y8NUlOkC0017GetVtBl-bxxmFwIkx9cfE_twUENB4a5wCXjynNvDp-vGlKG0KXRUF5yYKGhTnQCP4IS0Hyc4RMb8Df/s1600/Screenshot+from+2017-11-24+09-38-15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="537" data-original-width="500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQKn12NA2f89za3W7s62cCOL0XZIclySBEAtrdveIkTQISxddaC0Y8NUlOkC0017GetVtBl-bxxmFwIkx9cfE_twUENB4a5wCXjynNvDp-vGlKG0KXRUF5yYKGhTnQCP4IS0Hyc4RMb8Df/s320/Screenshot+from+2017-11-24+09-38-15.png" width="297" /></a></div>
------------------------------------------------------------------------------------------------------------------------------<br />
<br />
#!/usr/bin/perl<br /><br />use strict;<br />use warnings;<br /><br />use SDL;<br />use SDL::Event;<br />use SDL::Events;<br />use SDLx::App;<br /><br />my $app =SDLx::App->new (<br /> w => 500,<br /> h => 500,<br /> d => 32,<br /> title => 'QUIT EVENTS',<br /> exit_on_quit => 1,<br />);<br /><br />$app->add_event_handler( \&quit_event);<br /><br />$app->run();<br /><br />sub quit_event {<br /> # the callback receives the appropriate SDL::Event<br /> my ($event, $controller ) = @_;<br /> # stopping the controller will exit $app->run() for as <br /> $controller->stop if $event->type == SDL_QUIT;<br />}<br />
----------------------------------------------------------------------------------------------------------------------------</div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0tag:blogger.com,1999:blog-6664001403810789524.post-3335487783745806832017-11-23T12:24:00.001+02:002017-11-23T12:24:30.792+02:00Perl SDL -> Laser<div dir="ltr" style="text-align: left;" trbidi="on">
#!/usr/bin/perl<br /><br />use strict;<br />use warnings;<br /><br />use SDL;<br />use SDL::Event;<br />use SDLx::App;<br /><br />my $app = SDLx::App->new (<br /> w => 500,<br /> h => 500,<br /> title => 'SDL Laser',<br /> exit_on_quit => 1, <br />);<br /><br />my $laser = 0;<br /><br />my $velocity = 10;<br /><br />$app->add_event_handler( \&quit);<br />$app->add_move_handler( \&calculate_laser);<br />$app->add_show_handler( \&render_laser);<br /><br />$app->run();<br /><br />sub quit {<br /> my $event = shift;<br /> my $controller = shift;<br /> $controller->stop if $event->type == SDL_QUIT;<br />}<br /><br />sub calculate_laser {<br /> my ( $step, $app, $t ) = @_;<br /> $laser += $velocity * $step;<br /> $laser = 0 if $laser > $app->w;<br />}<br /><br />sub render_laser {<br /> my ( $delta, $app ) = @_;<br /> $app->draw_rect( [0, 0, $app->w, $app->h], 0);<br /> $app->draw_rect( [$laser, $app->h/2, 10, 2], [250, 0, 0, 255]);<br /> <br /> $app->update();<br />}<br />
-------------------------------------------------------------------------------------------------------------------------------<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS7qpkzzglsWfkVG7navuNp9PHW-omT0UiChDDtPLzLgY8ocgmGj11D4L2XXRcA9ZrqZG7LilXbZqj0YozqKzMM74irVaQBbfFChcqraTMUpWPupJZnZ_JzW52K63tQ3z6c5-jCM6_rB6U/s1600/Screenshot+from+2017-11-23+12-16-35.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="537" data-original-width="500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS7qpkzzglsWfkVG7navuNp9PHW-omT0UiChDDtPLzLgY8ocgmGj11D4L2XXRcA9ZrqZG7LilXbZqj0YozqKzMM74irVaQBbfFChcqraTMUpWPupJZnZ_JzW52K63tQ3z6c5-jCM6_rB6U/s320/Screenshot+from+2017-11-23+12-16-35.png" width="297" /></a></div>
<br /></div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0tag:blogger.com,1999:blog-6664001403810789524.post-2596485081717691912017-11-21T15:38:00.001+02:002017-11-21T15:38:16.429+02:00Perl SDL -> New Game!<div dir="ltr" style="text-align: left;" trbidi="on">
#!/usr/bin/perl<br /><br />use strict;<br />use warnings;<br /><br />use SDL;<br />use SDL::Events;<br />use SDLx::App;<br />use SDLx::Rect;<br />use SDLx::Text;<br /># create the main screen<br />my $app = SDLx::App->new(<br /> width =>500,<br /> height =>500,<br /> title => 'New Game!',<br /> dt => 0.02,<br /> exit_on_quit => 1,<br />);<br /><br />my $player = {<br /> x => $app->w/2,<br /> y => $app->h-20,<br /> w => 80,<br /> h => 20,<br /> vel => 250,<br /> y_vel => 0,<br />};<br />my $minge = {<br /> x => $app->w/2,<br /> y => $app->h/2,<br /> dim => 10,<br />};<br /><br />$app->add_show_handler( \&show);<br />$app->run;<br /><br />sub show {<br /> # first, clear the screen<br /> $app->draw_rect( [0, 0, $app->width, $app->height], 0x000000FF);<br /> $app->draw_rect([$player->{x}, $player->{y}, $player->{w}, $player->{h}], 0xFF0000FF);<br /> $app->draw_circle_filled([$minge->{x}, $minge->{y}], $minge->{dim}, [0, 0,255, 255]);<br /> $app->update();<br />}<br />
-------------------------------------------------------------------------------------------------------------------------------<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZBb2XL0o6kMnG_DwCps1LEbzcUJnjL4HlPWgocc-nW0LQZ4gdWvANrpqKrUJbvCShVXgkigww44zQk61M7UiKT7Lt9lSZ2IyDRNLxODsS9u6kFtSU2_j6dAb4hQzxSgxMVyniW9XfpPji/s1600/Screenshot+from+2017-11-21+15-37-17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="537" data-original-width="500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZBb2XL0o6kMnG_DwCps1LEbzcUJnjL4HlPWgocc-nW0LQZ4gdWvANrpqKrUJbvCShVXgkigww44zQk61M7UiKT7Lt9lSZ2IyDRNLxODsS9u6kFtSU2_j6dAb4hQzxSgxMVyniW9XfpPji/s320/Screenshot+from+2017-11-21+15-37-17.png" width="297" /></a></div>
------------------------------------------------------------------------------------------------------------------------------<br />
<br />
<br /></div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0tag:blogger.com,1999:blog-6664001403810789524.post-25591636949323483702017-11-18T08:16:00.001+02:002017-11-21T12:00:41.309+02:00PERL SDL Game development<div dir="ltr" style="text-align: left;" trbidi="on">
<div id="Welcome_CONTENT">
SDL Perl are a set of bindings to the Simple DirectMedia Layer (SDL).<br />
'Simple DirectMedia Layer is a cross-platform multimedia library
designed to provide low level access to audio, keyboard, mouse,
joystick,
3D hardware via OpenGL, and 2D video framebuffer. It is used by MPEG
playback software, emulators, and many popular games, including the
award winning Linux port of "Civilization: Call To Power."' --<cite>www.libsdl.org</cite><br />
SDL Perl is an active and exciting project with many facets. Explore this website to learn more.<br />
--------------------------------------------------------------------------------------------------------------------<br />
#!/usr/bin/perl<br />
<br />
use strict;<br />
use warnings;<br />
<br />
use SDL;<br />
use SDLx::App;<br />
<br />
# create the main screen<br />
my $app = SDLx::App->new(<br />
width =>500,<br />
height =>500,<br />
title => 'Ping/Pong Game!',<br />
dt => 0.02,<br />
exit_on_quit => 1,<br />
);<br />
<br />
# let's roll!<br />
$app->run;<br />
--------------------------------------------------------------------------------------------------------------------------<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKaY4avGioklc2Qxk0CGl_ZHOceXAFKNGM2Q_KYFWjY737EO27xlLke1LxDQmguV5tdQNCQdkA-5iipuGJYMpEhL6eGyjXeWuXS-Y5oMOdW_0LPaYJS-wXeoUOoyNTqb-x6ggiPsnyPIc1/s1600/Screenshot+from+2017-11-21+09-06-08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="537" data-original-width="500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKaY4avGioklc2Qxk0CGl_ZHOceXAFKNGM2Q_KYFWjY737EO27xlLke1LxDQmguV5tdQNCQdkA-5iipuGJYMpEhL6eGyjXeWuXS-Y5oMOdW_0LPaYJS-wXeoUOoyNTqb-x6ggiPsnyPIc1/s320/Screenshot+from+2017-11-21+09-06-08.png" width="297" /></a></div>
--------------------------------------------------------------------------------------------------------------------------<br />
#!/usr/bin/perl<br />
<br />
use strict;<br />
use warnings;<br />
<br />
use SDL;<br />
use SDLx::App;<br />
use SDLx::Rect;<br />
<br />
# create the main screen<br />
my $app = SDLx::App->new(<br />
width =>500,<br />
height =>500,<br />
title => 'Ping/Pong Game!',<br />
dt => 0.02,<br />
exit_on_quit => 1,<br />
);<br />
<br />
my $player1 = {<br />
paddle => SDLx::Rect->new(10, $app->h/2, 10, 40),<br />
};<br />
<br />
$app->add_show_handler(<br />
sub {<br />
# first, clear the screen<br />
$app->draw_rect( [0, 0, $app->width, $app->height], 0x000000FF);<br />
<br />
# each paddle<br />
$app->draw_rect( $player1->{paddle}, 0xFF0000FF);<br />
<br />
$app->update();<br />
}<br />
);<br />
# let's roll!<br />
$app->run;<br />
------------------------------------------------------------------------------------------------------------------------------------<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZHGNXqRnFPlvgq4Shb_JYeoaUm0s0Y9V-UsrqJGS3ZrFMXWs51VDsGthKgL6CIDjtGUJOote-0I185PkYwAZ8Xsjo5qIIyQgMb52hjZ7_WETrPgviUyPm7m7MJBu-6-4Tjfw8KblCq0d2/s1600/Screenshot+from+2017-11-21+09-33-07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="537" data-original-width="500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZHGNXqRnFPlvgq4Shb_JYeoaUm0s0Y9V-UsrqJGS3ZrFMXWs51VDsGthKgL6CIDjtGUJOote-0I185PkYwAZ8Xsjo5qIIyQgMb52hjZ7_WETrPgviUyPm7m7MJBu-6-4Tjfw8KblCq0d2/s320/Screenshot+from+2017-11-21+09-33-07.png" width="297" /></a></div>
------------------------------------------------------------------------------------------------------------------------------</div>
<div id="Welcome_CONTENT">
#!/usr/bin/perl<br />
<br />
use strict;<br />
use warnings;<br />
<br />
use SDL;<br />
use SDLx::App;<br />
use SDLx::Rect;<br />
<br />
# create the main screen<br />
my $app = SDLx::App->new(<br />
width =>500,<br />
height =>500,<br />
title => 'Ping/Pong Game!',<br />
dt => 0.02,<br />
exit_on_quit => 1,<br />
);<br />
<br />
my $player1 = {<br />
paddle => SDLx::Rect->new(10, $app->h/2, 10, 40),<br />
};<br />
<br />
my $player2 = {<br />
paddle => SDLx::Rect->new($app->w-20, $app->h/2, 10, 40),<br />
};<br />
<br />
$app->add_show_handler(<br />
sub {<br />
# first, clear the screen<br />
$app->draw_rect( [0, 0, $app->width, $app->height], 0x000000FF);<br />
<br />
# each paddle<br />
$app->draw_rect( $player1->{paddle}, 0xFF0000FF);<br />
$app->draw_rect( $player2->{paddle}, 0xFF0000FF);<br />
$app->update();<br />
}<br />
);<br />
# let's roll!<br />
$app->run;<br />
--------------------------------------------------------------------------------------------------------------------<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSduX6b_dJhjCo_eCkN-AUf6i7gUWwKBqxre4J1qo8WVC-ZbaZc6GzZzC6t7VaJS9jgrseIIt8fGI4eaQ8k3GYFVRyMS1Iy1uiuihWGZ7dIE9J2-Kw79KPmokQxzIM5GJBIG_9lV3nzNWm/s1600/Screenshot+from+2017-11-21+09-39-25.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="537" data-original-width="500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSduX6b_dJhjCo_eCkN-AUf6i7gUWwKBqxre4J1qo8WVC-ZbaZc6GzZzC6t7VaJS9jgrseIIt8fGI4eaQ8k3GYFVRyMS1Iy1uiuihWGZ7dIE9J2-Kw79KPmokQxzIM5GJBIG_9lV3nzNWm/s320/Screenshot+from+2017-11-21+09-39-25.png" width="297" /></a></div>
------------------------------------------------------------------------------------------------------------------------------</div>
<div id="Welcome_CONTENT">
#!/usr/bin/perl<br />
<br />
use strict;<br />
use warnings;<br />
<br />
use SDL;<br />
use SDLx::App;<br />
use SDLx::Rect;<br />
<br />
# create the main screen<br />
my $app = SDLx::App->new(<br />
width =>500,<br />
height =>500,<br />
title => 'Ping/Pong Game!',<br />
dt => 0.02,<br />
exit_on_quit => 1,<br />
);<br />
<br />
my $player1 = {<br />
paddle => SDLx::Rect->new(10, $app->h/2, 10, 40),<br />
};<br />
<br />
my $player2 = {<br />
paddle => SDLx::Rect->new($app->w-20, $app->h/2, 10, 40),<br />
};<br />
<br />
my $ball = {<br />
rect => SDLx::Rect->new($app->w/2, $app->h/2, 10, 10),<br />
};<br />
<br />
$app->add_show_handler(<br />
sub {<br />
# first, clear the screen<br />
$app->draw_rect( [0, 0, $app->width, $app->height], 0x000000FF);<br />
# render the ball<br />
$app->draw_rect( $ball->{rect}, 0xFF0000FF);<br />
# each paddle<br />
$app->draw_rect( $player1->{paddle}, 0xFF0000FF);<br />
$app->draw_rect( $player2->{paddle}, 0xFF0000FF);<br />
$app->update();<br />
}<br />
);<br />
# let's roll!<br />
$app->run;<br />
------------------------------------------------------------------------------------------------------------------------------<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmvuZgKrZjWKG80GvYia4JT11lRdBqanik0ouh3O6awdMFZ3HQJZ3JkBvfbfKE79qx8J1OYcx5v3yZzijWR66UrE872fOY1aZ_iZ9Ex8mlFyOATCJXWPKViP6lnIY_tIR637NG6lWXwQVb/s1600/Screenshot+from+2017-11-21+09-43-24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="537" data-original-width="500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmvuZgKrZjWKG80GvYia4JT11lRdBqanik0ouh3O6awdMFZ3HQJZ3JkBvfbfKE79qx8J1OYcx5v3yZzijWR66UrE872fOY1aZ_iZ9Ex8mlFyOATCJXWPKViP6lnIY_tIR637NG6lWXwQVb/s320/Screenshot+from+2017-11-21+09-43-24.png" width="297" /></a></div>
----------------------------------------------------------------------------------------------------------------------------------</div>
<div id="Welcome_CONTENT">
#!/usr/bin/perl<br />
<br />
use strict;<br />
use warnings;<br />
<br />
use SDL;<br />
use SDLx::App;<br />
use SDLx::Rect;<br />
<br />
# create the main screen<br />
my $app = SDLx::App->new(<br />
width =>500,<br />
height =>500,<br />
title => 'Ping/Pong Game!',<br />
dt => 0.02,<br />
exit_on_quit => 1,<br />
);<br />
<br />
my $player1 = {<br />
paddle => SDLx::Rect->new(10, $app->h/2, 10, 40),<br />
v_y => 0,<br />
};<br />
<br />
my $player2 = {<br />
paddle => SDLx::Rect->new($app->w-20, $app->h/2, 10, 40),<br />
};<br />
<br />
my $ball = {<br />
rect => SDLx::Rect->new($app->w/2, $app->h/2, 10, 10),<br />
};<br />
<br />
$app->add_show_handler(<br />
sub {<br />
# first, clear the screen<br />
$app->draw_rect( [0, 0, $app->width, $app->height], 0x000000FF);<br />
# render the ball<br />
$app->draw_rect( $ball->{rect}, 0xFF0000FF);<br />
# each paddle<br />
$app->draw_rect( $player1->{paddle}, 0xFF0000FF);<br />
$app->draw_rect( $player2->{paddle}, 0xFF0000FF);<br />
$app->update();<br />
}<br />
);<br />
# ---- handles the player's paddle movement<br />
$app->add_move_handler(<br />
sub {<br />
my ( $step, $app ) = @_;<br />
my $paddle = $player1->{paddle};<br />
my $v_y = $player1->{v_y};<br />
<br />
$paddle->y( $paddle->y( $v_y * $step )); <br />
}<br />
);<br />
# let's roll!<br />
$app->run;<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0Xi6qNuwROyqEng4OpNeASRwSpyDjHYCUsUSPs34b-DX40AK2SjjhYllm6i6NdxpMhsUiFXJp_JYqQnumx-8hz3BCWlfnNRq3ihe4j829byeLzaCly8KJOuhvkP2MDMpO87VXCGl1tmT8/s1600/Screenshot+from+2017-11-21+10-00-00.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="537" data-original-width="500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0Xi6qNuwROyqEng4OpNeASRwSpyDjHYCUsUSPs34b-DX40AK2SjjhYllm6i6NdxpMhsUiFXJp_JYqQnumx-8hz3BCWlfnNRq3ihe4j829byeLzaCly8KJOuhvkP2MDMpO87VXCGl1tmT8/s320/Screenshot+from+2017-11-21+10-00-00.png" width="297" /></a></div>
---------------------------------------------------------------------------------------------------------------------------</div>
<div id="Welcome_CONTENT">
#!/usr/bin/perl<br />
<br />
use strict;<br />
use warnings;<br />
<br />
use SDL;<br />
use SDLx::App;<br />
use SDLx::Rect;<br />
<br />
# create the main screen<br />
my $app = SDLx::App->new(<br />
width =>500,<br />
height =>500,<br />
title => 'Ping/Pong Game!',<br />
dt => 0.02,<br />
exit_on_quit => 1,<br />
);<br />
<br />
my $player1 = {<br />
paddle => SDLx::Rect->new(10, $app->h/2, 10, 40),<br />
v_y => 0,<br />
};<br />
<br />
my $player2 = {<br />
paddle => SDLx::Rect->new($app->w-20, $app->h/2, 10, 40),<br />
v_y => 0,<br />
};<br />
<br />
my $ball = {<br />
rect => SDLx::Rect->new($app->w/2, $app->h/2, 10, 10),<br />
};<br />
<br />
$app->add_show_handler(<br />
sub {<br />
# first, clear the screen<br />
$app->draw_rect( [0, 0, $app->width, $app->height], 0x000000FF);<br />
# render the ball<br />
$app->draw_rect( $ball->{rect}, 0xFF0000FF);<br />
# each paddle<br />
$app->draw_rect( $player1->{paddle}, 0xFF0000FF);<br />
$app->draw_rect( $player2->{paddle}, 0xFF0000FF);<br />
$app->update();<br />
}<br />
);<br />
# ---- handles the player's paddle movement<br />
$app->add_move_handler(<br />
sub {<br />
my ( $step, $app ) = @_;<br />
my $paddle = $player1->{paddle};<br />
my $v_y = $player1->{v_y};<br />
<br />
$paddle->y( $paddle->y( $v_y * $step )); <br />
}<br />
);<br />
# handles AI's paddle movement<br />
$app->add_move_handler(<br />
sub {<br />
my ( $step, $app ) = @_;<br />
my $paddle = $player2->{paddle};<br />
my $v_y = $player2->{v_y};<br />
<br />
$paddle->y( $paddle->y( $v_y * $step )); <br />
}<br />
);<br />
# let's roll!<br />
$app->run;<br />
---------------------------------------------------------------------------------------------------------------------<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCAiittdTJem0KsPOnshtV4cLYEHl-zMpUrNxqOgisSxgFScj_0vUAL79fvTSNKne_E9sL27YauVLX94bf_Su_zUUSvZGWspOCu7LcrBxO3ONTDsUDXnWqdpuJC9IRzS9hkUg_9TQx08Qe/s1600/Screenshot+from+2017-11-21+10-06-41.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="537" data-original-width="500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCAiittdTJem0KsPOnshtV4cLYEHl-zMpUrNxqOgisSxgFScj_0vUAL79fvTSNKne_E9sL27YauVLX94bf_Su_zUUSvZGWspOCu7LcrBxO3ONTDsUDXnWqdpuJC9IRzS9hkUg_9TQx08Qe/s320/Screenshot+from+2017-11-21+10-06-41.png" width="297" /></a></div>
------------------------------------------------------------------------------------------------------------------------------</div>
<div id="Welcome_CONTENT">
#!/usr/bin/perl<br />
<br />
use strict;<br />
use warnings;<br />
<br />
use SDL;<br />
use SDLx::App;<br />
use SDLx::Rect;<br />
<br />
# create the main screen<br />
my $app = SDLx::App->new(<br />
width =>500,<br />
height =>500,<br />
title => 'Ping/Pong Game!',<br />
dt => 0.02,<br />
exit_on_quit => 1,<br />
);<br />
<br />
my $player1 = {<br />
paddle => SDLx::Rect->new(10, $app->h/2, 10, 40),<br />
v_y => 0,<br />
};<br />
<br />
my $player2 = {<br />
paddle => SDLx::Rect->new($app->w-20, $app->h/2, 10, 40),<br />
v_y => 0,<br />
};<br />
<br />
my $ball = {<br />
rect => SDLx::Rect->new($app->w/2, $app->h/2, 10, 10),<br />
};<br />
<br />
$app->add_show_handler(<br />
sub {<br />
# first, clear the screen<br />
$app->draw_rect( [0, 0, $app->width, $app->height], 0x000000FF);<br />
# render the ball<br />
$app->draw_rect( $ball->{rect}, 0xFF0000FF);<br />
# each paddle<br />
$app->draw_rect( $player1->{paddle}, 0xFF0000FF);<br />
$app->draw_rect( $player2->{paddle}, 0xFF0000FF);<br />
$app->update();<br />
}<br />
);<br />
# ---- handles the player's paddle movement<br />
$app->add_move_handler(<br />
sub {<br />
my ( $step, $app ) = @_;<br />
my $paddle = $player1->{paddle};<br />
my $v_y = $player1->{v_y};<br />
<br />
$paddle->y( $paddle->y( $v_y * $step )); <br />
}<br />
);<br />
# handles AI's paddle movement<br />
$app->add_move_handler(<br />
sub {<br />
my ( $step, $app ) = @_;<br />
my $paddle = $player2->{paddle};<br />
my $v_y = $player2->{v_y};<br />
<br />
$paddle->y( $paddle->y( $v_y * $step )); <br />
}<br />
);<br />
# let's roll!<br />
$app->run;<br />
-----------------------------------------------------------------------------------------------------------------------<br />
#!/usr/bin/perl<br />
<br />
use strict;<br />
use warnings;<br />
<br />
use SDL;<br />
use SDL::Events;<br />
use SDLx::App;<br />
use SDLx::Rect;<br />
<br />
# create the main screen<br />
my $app = SDLx::App->new(<br />
width =>500,<br />
height =>500,<br />
title => 'Ping/Pong Game!',<br />
dt => 0.02,<br />
exit_on_quit => 1,<br />
);<br />
<br />
my $player1 = {<br />
paddle => SDLx::Rect->new(10, $app->h/2, 10, 40),<br />
v_y => 0,<br />
};<br />
<br />
my $player2 = {<br />
paddle => SDLx::Rect->new($app->w-20, $app->h/2, 10, 40),<br />
v_y => 0,<br />
};<br />
<br />
my $ball = {<br />
rect => SDLx::Rect->new($app->w/2, $app->h/2, 10, 10),<br />
v_x => -2.7,<br />
v_y => 1.8,<br />
};<br />
<br />
$app->add_show_handler(<br />
sub {<br />
# first, clear the screen<br />
$app->draw_rect( [0, 0, $app->width, $app->height], 0x000000FF);<br />
# render the ball<br />
$app->draw_rect( $ball->{rect}, 0xFF0000FF);<br />
# each paddle<br />
$app->draw_rect( $player1->{paddle}, 0xFF0000FF);<br />
$app->draw_rect( $player2->{paddle}, 0xFF0000FF);<br />
$app->update();<br />
}<br />
);<br />
# ---- handles the player's paddle movement<br />
$app->add_move_handler(<br />
sub {<br />
my ( $step, $app ) = @_;<br />
my $paddle = $player1->{paddle};<br />
my $v_y = $player1->{v_y};<br />
<br />
$paddle->y( $paddle->y( $v_y * $step )); <br />
}<br />
);<br />
# handles AI's paddle movement<br />
$app->add_move_handler(<br />
sub {<br />
my ( $step, $app ) = @_;<br />
my $paddle = $player2->{paddle};<br />
my $v_y = $player2->{v_y};<br />
<br />
$paddle->y( $paddle->y( $v_y * $step )); <br />
}<br />
);<br />
# ---- handles Keyboard events<br />
$app->add_event_handler(<br />
sub {<br />
my ( $event, $app ) = @_;<br />
# user pressing a key<br />
if ( $event->type == SDL_KEYDOWN ) {<br />
# up arrow key means going up (negative velocity)<br />
if ( $event->key_sym == SDLK_UP ) {<br />
$player1->{v_y} = -500;<br />
}<br />
# down arrow key means going down (positive velocity)<br />
elsif ( $event->key_sym == SDLK_DOWN ) {<br />
$player1->{v_y} = 500;<br />
}<br />
}<br />
# user releasing a key <br />
elsif ( $event->type == SDL_KEYUP ) {<br />
# up or down arrow keys released, stop the paddle<br />
if ( $event->key_sym==SDLK_UP or $event->key_sym== SDLK_DOWN ) {<br />
$player1->{v_y} = $app->width/2;<br />
<br />
}<br />
}<br />
}<br />
);<br />
# handles the ball movement<br />
$app->add_move_handler (<br />
sub {<br />
my ( $step, $app ) = @_;<br />
my $ball_rect = $ball->{rect};<br />
<br />
$ball_rect->x( $ball_rect->x +( $ball->{v_x} * $step));<br />
$ball_rect->y( $ball_rect->y +( $ball->{v_y} * $step));<br />
}<br />
);<br />
<br />
# let's roll!<br />
$app->run;<br />
--------------------------------------------------------------------------------------------------------------------------------<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLu05VEvALull2KmMmPiRqi-9mMDixw_Lnhrf3TLdHPWIfsNcCKLiDRuaLaY4bZ4uqAP2Jo6g6vUwzyWN1MmYn4C5WizgxsVpyXPa5oYxAsTL8ORuhAJ9LiRzRh9AvK8VkkMUIU3AsFvKz/s1600/Screenshot+from+2017-11-21+10-43-42.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="537" data-original-width="500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLu05VEvALull2KmMmPiRqi-9mMDixw_Lnhrf3TLdHPWIfsNcCKLiDRuaLaY4bZ4uqAP2Jo6g6vUwzyWN1MmYn4C5WizgxsVpyXPa5oYxAsTL8ORuhAJ9LiRzRh9AvK8VkkMUIU3AsFvKz/s320/Screenshot+from+2017-11-21+10-43-42.png" width="297" /></a></div>
--------------------------------------------------------------------------------------------------------------------------------</div>
<div id="Welcome_CONTENT">
#!/usr/bin/perl<br />
<br />
use strict;<br />
use warnings;<br />
<br />
use SDL;<br />
use SDL::Events;<br />
use SDLx::App;<br />
use SDLx::Rect;<br />
<br />
# create the main screen<br />
my $app = SDLx::App->new(<br />
width =>500,<br />
height =>500,<br />
title => 'Ping/Pong Game!',<br />
dt => 0.02,<br />
exit_on_quit => 1,<br />
);<br />
<br />
my $player1 = {<br />
paddle => SDLx::Rect->new(10, $app->h/2, 10, 40),<br />
v_y => 0,<br />
score => 0,<br />
};<br />
<br />
my $player2 = {<br />
paddle => SDLx::Rect->new($app->w-20, $app->h/2, 10, 40),<br />
v_y => 0,<br />
score => 0,<br />
};<br />
<br />
my $ball = {<br />
rect => SDLx::Rect->new($app->w/2, $app->h/2, 10, 10),<br />
v_x => -2.7,<br />
v_y => 1.8,<br />
};<br />
<br />
$app->add_show_handler(<br />
sub {<br />
# first, clear the screen<br />
$app->draw_rect( [0, 0, $app->width, $app->height], 0x000000FF);<br />
# render the ball<br />
$app->draw_rect( $ball->{rect}, 0xFF0000FF);<br />
# each paddle<br />
$app->draw_rect( $player1->{paddle}, 0xFF0000FF);<br />
$app->draw_rect( $player2->{paddle}, 0xFF0000FF);<br />
$app->update();<br />
}<br />
);<br />
# ---- handles the player's paddle movement<br />
$app->add_move_handler(<br />
sub {<br />
my ( $step, $app ) = @_;<br />
my $paddle = $player1->{paddle};<br />
my $v_y = $player1->{v_y};<br />
<br />
$paddle->y( $paddle->y( $v_y * $step )); <br />
}<br />
);<br />
# handles AI's paddle movement<br />
$app->add_move_handler(<br />
sub {<br />
my ( $step, $app ) = @_;<br />
my $paddle = $player2->{paddle};<br />
my $v_y = $player2->{v_y};<br />
<br />
$paddle->y( $paddle->y( $v_y * $step )); <br />
}<br />
);<br />
# ---- handles Keyboard events<br />
$app->add_event_handler(<br />
sub {<br />
my ( $event, $app ) = @_;<br />
# user pressing a key<br />
if ( $event->type == SDL_KEYDOWN ) {<br />
# up arrow key means going up (negative velocity)<br />
if ( $event->key_sym == SDLK_UP ) {<br />
$player1->{v_y} = -500;<br />
}<br />
# down arrow key means going down (positive velocity)<br />
elsif ( $event->key_sym == SDLK_DOWN ) {<br />
$player1->{v_y} = 500;<br />
}<br />
}<br />
# user releasing a key <br />
elsif ( $event->type == SDL_KEYUP ) {<br />
# up or down arrow keys released, stop the paddle<br />
if ( $event->key_sym==SDLK_UP or $event->key_sym== SDLK_DOWN ) {<br />
$player1->{v_y} = $app->width/2;<br />
<br />
}<br />
}<br />
}<br />
);<br />
# handles the ball movement<br />
$app->add_move_handler (<br />
sub {<br />
my ( $step, $app ) = @_;<br />
my $ball_rect = $ball->{rect};<br />
<br />
$ball_rect->x( $ball_rect->x +( $ball->{v_x} * $step));<br />
$ball_rect->y( $ball_rect->y +( $ball->{v_y} * $step));<br />
<br />
# collision to the bottom of the screen<br />
if ( $ball_rect->bottom >= $app->h ) {<br />
$ball_rect->bottom( $app->h );<br />
$ball->{v_y} *= -1; <br />
}<br />
# collision to the top of the screen<br />
elsif ( $ball_rect->top <= 0 ) {<br />
$ball_rect->top( 0 );<br />
$ball->{v_y} *= -1<br />
}<br />
# collision to the right: player1 score!<br />
elsif ( $ball_rect->right >= $app->w ) {<br />
$player1->{score}++;<br />
reset_game();<br />
return;<br />
}<br />
# collision to the right: player2 score!<br />
elsif ( $ball_rect->left <= 0 ) {<br />
$player2->{score}++;<br />
reset_game();<br />
return;<br />
}<br />
}<br />
);<br />
<br />
# let's roll!<br />
$app->run;<br />
<br />
sub reset_game {<br />
$ball->{rect}->x( $app->w/2 );<br />
$ball->{rect}->y( $app->h/2 );<br />
}<br />
-------------------------------------------------------------------------------------------------------------------------------<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwUs793jJLiB3tdC8Vg4Uz-wgVRXvB9qAvB0N9pf2aYlnf_DbiK_NmBdJWkqP-zD4ZS2H2lpHO2zy_Rb-iSXuEWeoa95yHKh2znbsBWoh0-iX7VibD0K3N4oR2-y1IxxtLTb6Py1_pizJE/s1600/Screenshot+from+2017-11-21+11-06-41.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="537" data-original-width="500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwUs793jJLiB3tdC8Vg4Uz-wgVRXvB9qAvB0N9pf2aYlnf_DbiK_NmBdJWkqP-zD4ZS2H2lpHO2zy_Rb-iSXuEWeoa95yHKh2znbsBWoh0-iX7VibD0K3N4oR2-y1IxxtLTb6Py1_pizJE/s320/Screenshot+from+2017-11-21+11-06-41.png" width="297" /></a></div>
----------------------------------------------------------------------------------------------------------------------<br />
#!/usr/bin/perl<br />
<br />
use strict;<br />
use warnings;<br />
<br />
use SDL;<br />
use SDL::Events;<br />
use SDLx::App;<br />
use SDLx::Rect;<br />
use SDLx::Text;<br />
# create the main screen<br />
my $app = SDLx::App->new(<br />
width =>500,<br />
height =>500,<br />
title => 'Ping/Pong Game!',<br />
dt => 0.02,<br />
exit_on_quit => 1,<br />
);<br />
<br />
my $player1 = {<br />
paddle => SDLx::Rect->new(10, $app->h/2, 10, 40),<br />
v_y => 1,<br />
score => 0,<br />
};<br />
<br />
my $player2 = {<br />
paddle => SDLx::Rect->new($app->w-20, $app->h/2, 10, 40),<br />
v_y => 10,<br />
score => 0,<br />
};<br />
<br />
my $ball = {<br />
rect => SDLx::Rect->new($app->w/2, $app->h/2, 10, 10),<br />
v_x => -2.7,<br />
v_y => 1.8,<br />
};<br />
<br />
my $score = SDLx::Text->new( font=>'font.ttf', h_align=>'center' );<br />
<br />
$app->add_show_handler(<br />
sub {<br />
# first, clear the screen<br />
$app->draw_rect( [0, 0, $app->width, $app->height], 0x000000FF);<br />
# render the ball<br />
$app->draw_rect( $ball->{rect}, 0xFF0000FF);<br />
# each paddle<br />
$app->draw_rect( $player1->{paddle}, 0xFF0000FF);<br />
$app->draw_rect( $player2->{paddle}, 0xFF0000FF);<br />
$app->update();<br />
}<br />
);<br />
# ---- handles the player's paddle movement<br />
$app->add_move_handler(<br />
sub {<br />
my ( $step, $app ) = @_;<br />
my $paddle = $player1->{paddle};<br />
my $v_y = $player1->{v_y};<br />
<br />
$paddle->y( $paddle->y( $v_y * $step )); <br />
}<br />
);<br />
# handles AI's paddle movement<br />
$app->add_move_handler(<br />
sub {<br />
my ( $step, $app ) = @_;<br />
my $paddle = $player2->{paddle};<br />
my $v_y = $player2->{v_y};<br />
<br />
if ( $ball->{rect}->y > $paddle->y ) {<br />
$player2->{v_y} = 1.5;<br />
}<br />
elsif ( $ball->{rect}->y < $paddle->y) {<br />
$player2->{v_y} = -1.5;<br />
}<br />
else {<br />
$player2->{v_y} = 0;<br />
}<br />
$paddle->y( $paddle->y( $v_y * $step )); <br />
}<br />
);<br />
# ---- handles Keyboard events<br />
$app->add_event_handler(<br />
sub {<br />
my ( $event, $app ) = @_;<br />
# user pressing a key<br />
if ( $event->type == SDL_KEYDOWN ) {<br />
# up arrow key means going up (negative velocity)<br />
if ( $event->key_sym == SDLK_UP ) {<br />
$player1->{v_y} = -500;<br />
}<br />
# down arrow key means going down (positive velocity)<br />
elsif ( $event->key_sym == SDLK_DOWN ) {<br />
$player1->{v_y} = 50;<br />
}<br />
}<br />
# user releasing a key <br />
elsif ( $event->type == SDL_KEYUP ) {<br />
# up or down arrow keys released, stop the paddle<br />
if ( $event->key_sym==SDLK_UP or $event->key_sym== SDLK_DOWN ) {<br />
$player1->{v_y} = 500;<br />
<br />
}<br />
}<br />
}<br />
);<br />
# handles the ball movement<br />
$app->add_move_handler (<br />
sub {<br />
my ( $step, $app ) = @_;<br />
my $ball_rect = $ball->{rect};<br />
<br />
$ball_rect->x( $ball_rect->x +( $ball->{v_x} * $step));<br />
$ball_rect->y( $ball_rect->y +( $ball->{v_y} * $step));<br />
<br />
# collision to the bottom of the screen<br />
if ( $ball_rect->bottom >= $app->h ) {<br />
$ball_rect->bottom( $app->h );<br />
$ball->{v_y} *= -1; <br />
}<br />
# collision to the top of the screen<br />
elsif ( $ball_rect->top <= 0 ) {<br />
$ball_rect->top( 0 );<br />
$ball->{v_y} *= -1<br />
}<br />
# collision to the right: player1 score!<br />
elsif ( $ball_rect->right >= $app->w ) {<br />
$player1->{score}++;<br />
reset_game();<br />
return;<br />
}<br />
# collision to the right: player2 score!<br />
elsif ( $ball_rect->left <= 0 ) {<br />
$player2->{score}++;<br />
reset_game();<br />
return;<br />
}<br />
# collision width player1's paddle<br />
elsif ( check_collision( $ball_rect, $player1->{paddle} )) {<br />
$ball_rect->left( $player1->{paddle}->right );<br />
$ball->{v_x} *= -1;<br />
}<br />
# collision width player2's paddle<br />
elsif ( check_collision($ball_rect, $player2->{paddle} )) {<br />
$ball->{v_x} *= -1;<br />
$ball_rect->right($player2->{paddle}->left );<br />
} <br />
}<br />
);<br />
<br />
# let's roll!<br />
$app->run;<br />
<br />
sub reset_game {<br />
$ball->{rect}->x( $app->w/2 );<br />
$ball->{rect}->y( $app->h/2 );<br />
}<br />
<br />
sub check_collision {<br />
my ( $A, $B ) = @_;<br />
<br />
return if $A->bottom < $B->top;<br />
return if $A->top > $B->bottom;<br />
return if $A->right < $B->left;<br />
return if $A->left > $B->right;<br />
<br />
# we have collision<br />
return 1; <br />
}<br />
-----------------------------------------------------------------------------------------------------------------------<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYNdrdNJnBR3aH1PC-ISSnFgOPnvroZBofguf1xBTZ0I2lsfi98wZPGD5lObsSxUyDpR-JRrdK68xP1IBd030eto-KlATJ7Mvb2iZA_Ff42DyCyOn13uTFrqtpvaOX-9sdQda5hGbgFKj4/s1600/Screenshot+from+2017-11-21+11-59-23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="537" data-original-width="500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYNdrdNJnBR3aH1PC-ISSnFgOPnvroZBofguf1xBTZ0I2lsfi98wZPGD5lObsSxUyDpR-JRrdK68xP1IBd030eto-KlATJ7Mvb2iZA_Ff42DyCyOn13uTFrqtpvaOX-9sdQda5hGbgFKj4/s320/Screenshot+from+2017-11-21+11-59-23.png" width="297" /></a></div>
--------------------------------------------- SFARSIT -----------------------------------------------------</div>
<div id="Welcome_CONTENT">
</div>
</div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0tag:blogger.com,1999:blog-6664001403810789524.post-54157081507104321202017-10-25T11:08:00.002+03:002017-10-25T11:08:34.313+03:00Invata Perl<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/WEghIXs8F6c/0.jpg" src="https://www.youtube.com/embed/WEghIXs8F6c?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<br /></div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0tag:blogger.com,1999:blog-6664001403810789524.post-74969364049441044532017-10-13T15:07:00.001+03:002017-10-13T15:07:47.781+03:00Articole de pe perltrick.com<div dir="ltr" style="text-align: left;" trbidi="on">
What's new on CPAN - September 2017<br />Mock APIs for free using JSON Schemas<br />What's new on CPAN - August 2017<br />Plotting With Perl 6<br />Git bisect and Perl<br />What's new on CPAN - July 2017<br />Pretty Printing Perl 6<br />What's new on CPAN - June 2017<br />What's New on CPAN - Annual Edition<br />What's new on CPAN - May 2017<br />On Sigils<br />What's new on CPAN - April 2017<br />Getting started with XS<br />Thinking about Perl 6<br />What's new on CPAN - March 2017<br />AWS Cloudfront cache invalidation with Paws<br />Track Module Changes While You Sleep<br />What's new on CPAN - February 2017<br />Deploy a static website with AWS S3 and Paws<br />What's new on CPAN - January 2017<br />Six more things I like about 6<br />Laptop review: Dell XPS 13 2-in-1 (9365)<br />What's new on CPAN - December 2016<br />Obscure Perl trick: single-quote separators<br />Perl module names are filepaths - and that's all<br />What's new on CPAN - November 2016<br />How to build a base module<br />I'm speaking at the London Perl Workshop 2016<br />How to upload a script to CPAN<br />What's new on CPAN - October 2016</div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0tag:blogger.com,1999:blog-6664001403810789524.post-49446352163890898432017-10-13T10:04:00.001+03:002017-10-13T10:07:21.564+03:00Articole de pe: blogs.perl.org — blogging the onion<div dir="ltr" style="text-align: left;" trbidi="on">
ARTICOLE:<br />
<br />
Announcing meta::hack v2<br />
I'm wondering how to learn good perl<br />
Perl 5 Porters Mailing List Summary: October 2nd-9th<br />
Docker based Continuous Integration for perl projects<br />
Dancer 2017 Survey: Update<br />
Perl 6 at the London Perl Workshop - 25 Nov 2017<br />
Fancy a Game of (Code) Golf?<br />
Machine learning in Perl, Part3: Deep Convolutional Generative Adversarial network<br />
Iridium Flare End-Of-Life<br />
CPAN6 Is Here<br />
Rakudo.js update - passes 64.65% roast test<br />
Perl less buggy than Python?<br />
Strawberry Perl 5.26.1.1 and 5.24.3.1 released<br />
Call for Lightning Talks -- London Perl Workshop<br />
Perl 5 Porters Mailing List Summary: September 25th - October 1st<br />
Dancer Survey 2017<br />
How to do Bit Operation Correctly in Perl? One Answer is SPVM.<br />
Not-Perl: Career Advice for Programmers<br />
YAML::PP Grant Report August/September 2017<br />
6lang: The Naming Discussion Update</div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0tag:blogger.com,1999:blog-6664001403810789524.post-79387563947077807792015-11-09T16:34:00.002+02:002015-11-09T16:35:18.360+02:00ATELIER->Perl si bazele de date<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #888888;">#!/usr/bin/perl</span>
<span style="color: #008800; font-weight: bold;">use</span> DBI;
<span style="color: #888888;">#use DBI::mysql;</span>
<span style="color: #008800; font-weight: bold;">use</span> POSIX;
<span style="color: #008800; font-weight: bold;">use</span> SDBM_File;
<span style="color: #008800; font-weight: bold;">use</span> warnings;
<span style="color: #008800; font-weight: bold;">use</span> strict;
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">@ary</span> <span style="color: #333333;">=</span> DBI<span style="color: #333333;">-></span>available_drivers();
<span style="color: #888888;"># Aceste linii afiseaza driverele disponibile pe sistemul dvs.</span>
<span style="color: #008800; font-weight: bold;">print</span> <span style="color: #007020;">join</span>(<span style="background-color: #fff0f0;">"\n"</span>, <span style="color: #996633;">@ary</span>), <span style="background-color: #fff0f0;">"\n"</span>;
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">%dbm</span>;
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$db_file</span> <span style="color: #333333;">=</span> <span style="background-color: #fff0f0;">"demo.dbm"</span>;
<span style="color: #007020;">tie</span> <span style="color: #996633;">%dbm</span>, <span style="background-color: #fff0f0;">'SDBM_File'</span>, <span style="color: #996633;">$db_file</span>, O_RDWR, <span style="color: #0000dd; font-weight: bold;">0</span> <span style="color: black; font-weight: bold;">or</span> <span style="color: #007020;">die</span> <span style="background-color: #fff0f0;">"error open $db_file: $!\n"</span>;
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$dbh</span> <span style="color: #333333;">=</span> DBI<span style="color: #333333;">-></span><span style="color: #007020;">connect</span>(<span style="background-color: #fff0f0;">'dbi:DBM:'</span>);
<span style="color: #996633;">$dbh</span><span style="color: #333333;">-></span>{RaiseError} <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">1</span>;
<span style="color: #888888;">#@driver_names = DBI->available_drivers;</span>
<span style="color: #996633;">$dbh</span><span style="color: #333333;">-></span>disconnect;
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Content-type: text/html\n\n"</span>;
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;"><<HTML;</span>
<span style="background-color: #fff0f0;"><html></span>
<span style="background-color: #fff0f0;"> <head></span>
<span style="background-color: #fff0f0;"> <title>Salut</title></span>
<span style="background-color: #fff0f0;"> </head></span>
<span style="background-color: #fff0f0;"> <body bgcolor="white" text="blue"></span>
<span style="background-color: #fff0f0;"> <p>SALUT!</p.</span>
<span style="background-color: #fff0f0;"> </body></span>
<span style="background-color: #fff0f0;"><html></span>
<span style="background-color: #fff0f0;">HTML</span>
</pre>
</div>
<br />
Resurse:<br />
<a href="http://zetcode.com/db/mysqlperl/dbi/" target="_blank">http://zetcode.com/db/mysqlperl/dbi/</a></div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0tag:blogger.com,1999:blog-6664001403810789524.post-90192196153086661962015-11-08T18:17:00.004+02:002015-11-08T19:49:13.270+02:00ATELIER -> Primul grafic plot in Perl<div dir="ltr" style="text-align: left;" trbidi="on">
Module pentru grafice in Perl:<br />
<ul style="text-align: left;">
<li>Chart::Cliker</li>
<li>Chart::OFC</li>
<li><a href="http://www.advsofteng.com/" target="_blank">ChartDirector </a></li>
<li>GD</li>
<li>GD::Graph</li>
<li>PDL::Graphics::PLplot</li>
<li>PDL</li>
<li><a href="http://search.cpan.org/perldoc?SVG%3A%3ATemplate%3A%3AGraph">SVG::Template::Graph</a></li>
<li><a href="http://search.cpan.org/dist/SVG-TT-Graph">SVG::TT::Graph</a></li>
<li><a href="http://search.cpan.org/perldoc?Chart%3A%3AGRACE">Chart::GRACE</a></li>
<li><a href="http://search.cpan.org/%7Elbrocard/GraphViz-2.04/lib/GraphViz.pm">GraphViz</a></li>
<li><a href="https://metacpan.org/pod/Chart::Gnuplot" target="_blank">Chart::Gnuplot</a></li>
<li>PLplot </li>
</ul>
<br />
Acesta este codul Perl care genereaza graficul test.png.<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #888888;">#!/usr/bin/perl</span>
<span style="color: #008800; font-weight: bold;">use</span> <span style="color: #0e84b5; font-weight: bold;">PDL::Graphics::</span>PLplot;
<span style="color: #008800; font-weight: bold;">use</span> PDL;
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$pl</span> <span style="color: #333333;">=</span> <span style="color: #0e84b5; font-weight: bold;">PDL::Graphics::</span>PLplot<span style="color: #333333;">-></span><span style="color: #008800; font-weight: bold;">new</span> (DEV <span style="color: #333333;">=></span><span style="background-color: #fff0f0;">"png"</span>, FILE <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">"test.png"</span>);
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$x</span> <span style="color: #333333;">=</span> sequence(<span style="color: #0000dd; font-weight: bold;">10</span>);
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$y</span> <span style="color: #333333;">=</span> <span style="color: #996633;">$x</span><span style="color: #333333;">**</span><span style="color: #0000dd; font-weight: bold;">2</span>;
<span style="color: #996633;">$pl</span><span style="color: #333333;">-></span>xyplot(<span style="color: #996633;">$x</span>,<span style="color: #996633;">$y</span>);
<span style="color: #996633;">$pl</span><span style="color: #333333;">-></span><span style="color: #007020;">close</span>;
</pre>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL0r3YeCd5XxtcCM16mCTqo0wVD6VcZxWI4_bhWUi4FFNgrzI8NMY_mMpLSuTU4aW4P5JJUMMlrlshjUUD4yp9Gk9mWgBrNDqUkygwJBY5m0ca2SM5u6gs41kcfhk2bBXq0TKwNNnNsX2v/s1600/test.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="332" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL0r3YeCd5XxtcCM16mCTqo0wVD6VcZxWI4_bhWUi4FFNgrzI8NMY_mMpLSuTU4aW4P5JJUMMlrlshjUUD4yp9Gk9mWgBrNDqUkygwJBY5m0ca2SM5u6gs41kcfhk2bBXq0TKwNNnNsX2v/s400/test.png" width="400" /></a></div>
<br />
Resurse:<br />
<a href="http://plplot.sourceforge.net/" target="_blank">http://plplot.sourceforge.net/</a><br />
<a href="http://search.cpan.org/~dhunt/PDL-Graphics-PLplot/plplot.pd" target="_blank">http://search.cpan.org/~dhunt/PDL-Graphics-PLplot/plplot.pd</a><br />
<a href="http://www.slideshare.net/dcmertens/p-lplot-talk" target="_blank">http://www.slideshare.net/dcmertens/p-lplot-talk</a><br />
<a href="https://github.com/gphat/chart-clicker-examples" target="_blank">https://github.com/gphat/chart-clicker-examples</a> </div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0tag:blogger.com,1999:blog-6664001403810789524.post-12363755064745593012015-11-08T15:28:00.001+02:002015-11-08T16:48:07.890+02:00ATELIER -> Extragerea datelor din site-uri HTML cu Perl<div dir="ltr" style="text-align: left;" trbidi="on">
<!-- HTML generated using hilite.me -->Acest script verifica numarul de telefon daca a fost portat pe siteul <a href="http://www.portabilitate.ro/">http://www.portabilitate.ro</a> si afiseaza rezultatele intr-o fereastra terminal dupa cum se vede in imagine. <br />
<div style="background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #888888;">#!/usr/bin/perl</span>
<span style="color: #888888;"># Acest script verifica nr 0722270796 la ce retea este abonat</span>
<span style="color: #888888;"># pe siteul PORTABILITATE.ro</span>
<span style="color: #008800; font-weight: bold;">use</span> warnings;
<span style="color: #008800; font-weight: bold;">use</span> strict;
<span style="color: #888888;"># Utilizarea modului LWP::Simple</span>
<span style="color: #008800; font-weight: bold;">use</span> <span style="color: #0e84b5; font-weight: bold;">LWP::</span>Simple;
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$url</span> <span style="color: #333333;">=</span> <span style="background-color: #fff0f0;">'http://www.portabilitate.ro/ro-no-0722270796'</span>;
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$content</span> <span style="color: #333333;">=</span> get <span style="color: #996633;">$url</span>;
<span style="color: #007020;">die</span> <span style="background-color: #fff0f0;">"Nu s-a incarcat $url"</span> <span style="color: #008800; font-weight: bold;">unless</span> <span style="color: #007020;">defined</span> <span style="color: #996633;">$content</span>;
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">@site</span> <span style="color: #333333;">=</span> head(<span style="color: #996633;">$url</span>);
<span style="color: #008800; font-weight: bold;">print</span> <span style="color: #996633;">$site</span>[<span style="color: #0000dd; font-weight: bold;">1</span>],<span style="color: #996633;">$site</span>[<span style="color: #0000dd; font-weight: bold;">0</span>], <span style="background-color: #fff0f0;">"\n"</span>;
<span style="color: #008800; font-weight: bold;">if</span> (<span style="color: #996633;">$content</span> <span style="color: #333333;">=~</span> <span style="background-color: #fff0ff; color: black;">m/Numarul/s</span>) {
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">'Am gasit linia Numarul'</span>;
<span style="color: #888888;">#my $_=shift;</span>
<span style="color: #888888;">#<td style="padding:10px;" align="right"><span id="ctl00_cphBody_lblCurrentOperator">Operator curent:</span></td></span>
<span style="color: #888888;">#<td style="color:red;padding:10px; font-weight:bold;"><a id="ctl00_cphBody_lnkOperator">RCS &amp; RDS</a></td></span>
<span style="color: #888888;">#m{<a id="ctl00_cphBody_lnkOperator">\s+</a>(\d+)} || die;</span>
<span style="color: #888888;">#return $1;</span>
}<span style="color: #008800; font-weight: bold;">else</span>{
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Nu am gasit linia"</span>;
}
<span style="color: #008800; font-weight: bold;">if</span> (<span style="color: #996633;">$content</span> <span style="color: #333333;">=~</span> <span style="background-color: #fff0ff; color: black;">m/id="ctl00_cphBody_lnkOperator"/s</span>) {
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">'Am gasit linia Numarul'</span>;
}<span style="color: #008800; font-weight: bold;">else</span>{
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Nu am gasit linia"</span>;
}
<span style="color: #008800; font-weight: bold;">my</span>( <span style="color: #996633;">$m</span> ) <span style="color: #333333;">=</span> <span style="color: #996633;">$content</span> <span style="color: #333333;">=~</span> <span style="background-color: #fff0ff; color: black;">m/<a id="ctl00_cphBody_lnkOperator">(.*?)<\/a>/</span>;
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"\n Am gasit Operatorul: $m"</span> <span style="color: #008800; font-weight: bold;">if</span> <span style="color: #007020;">defined</span> <span style="color: #996633;">$m</span>;
<span style="color: #888888;"># <span class="ContentTitle"></span>
<span style="color: #888888;"># Numarul 0722270796 este portat</span>
<span style="color: #888888;"># </span></span>
<span style="color: #008800; font-weight: bold;">my</span> (<span style="color: #996633;">$nr</span>)<span style="color: #333333;">=</span> <span style="color: #996633;">$content</span> <span style="color: #333333;">=~</span> <span style="background-color: #fff0ff; color: black;">m/<span class="ContentTitle">(.*?)<\/span>/s</span>;
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"\n $nr"</span> <span style="color: #008800; font-weight: bold;">if</span> <span style="color: #007020;">defined</span> <span style="color: #996633;">$nr</span>;
<span style="color: #888888;">#<a id="ctl00_cphBody_lnkOperatorInitial">VODAFONE ROMANIA</a></span>
<span style="color: #008800; font-weight: bold;">my</span> (<span style="color: #996633;">$operator</span>)<span style="color: #333333;">=</span> <span style="color: #996633;">$content</span> <span style="color: #333333;">=~</span> <span style="background-color: #fff0ff; color: black;">m/<a id="ctl00_cphBody_lnkOperatorInitial">(.*?)<\/a>/</span>;
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"\n Operatorul vechi: $operator"</span>;
<span style="color: #888888;"># my @matches;</span>
<span style="color: #888888;"># while ($content =~ /Numarul/g) {</span>
<span style="color: #888888;"># push @matches, $1;</span>
<span style="color: #888888;"># # }</span>
<span style="color: #888888;"># foreach my $m(@matches){</span>
<span style="color: #888888;"># print $m, "\n";</span>
<span style="color: #888888;"># }</span>
</pre>
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9okTwXjQbPtM9CsPuHGpk3bnqxqw_lfimjdahC6cJvOywgnXBERhlhBHDDxqHyVhMCZCeu9Ye_ul25U-29PlsGo6csd49S_Xs6RgJ74Vk8w9b_PTnncndUyMXUk8J42few8YgpOdzt_26/s1600/Screenshot+from+2015-11-08+16%253A41%253A18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9okTwXjQbPtM9CsPuHGpk3bnqxqw_lfimjdahC6cJvOywgnXBERhlhBHDDxqHyVhMCZCeu9Ye_ul25U-29PlsGo6csd49S_Xs6RgJ74Vk8w9b_PTnncndUyMXUk8J42few8YgpOdzt_26/s400/Screenshot+from+2015-11-08+16%253A41%253A18.png" width="400" /></a></div>
<!-- HTML generated using hilite.me -->Resurse:<br />
<a href="http://www.perlmonks.org/?node_id=10698" target="_blank">http://www.perlmonks.org/?node_id=10698</a><br />
<div style="background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #888888;">#!/usr/bin/perl</span>
<span style="color: #008800; font-weight: bold;">use</span> warnings;
<span style="color: #008800; font-weight: bold;">use</span> strict;
<span style="color: #008800; font-weight: bold;">use</span> <span style="color: #0e84b5; font-weight: bold;">LWP::</span>Simple;
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$url</span> <span style="color: #333333;">=</span> <span style="background-color: #fff0f0;">'http://www.portabilitate.ro/ro-no-0722270796'</span>;
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$content</span> <span style="color: #333333;">=</span> get <span style="color: #996633;">$url</span>;
<span style="color: #007020;">die</span> <span style="background-color: #fff0f0;">"Nu s-a incarcat $url"</span> <span style="color: #008800; font-weight: bold;">unless</span> <span style="color: #007020;">defined</span> <span style="color: #996633;">$content</span>;
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">@site</span> <span style="color: #333333;">=</span> head(<span style="color: #996633;">$url</span>);
<span style="color: #008800; font-weight: bold;">print</span> <span style="color: #996633;">$site</span>[<span style="color: #0000dd; font-weight: bold;">1</span>],<span style="color: #996633;">$site</span>[<span style="color: #0000dd; font-weight: bold;">0</span>], <span style="background-color: #fff0f0;">"\n"</span>;
<span style="color: #008800; font-weight: bold;">if</span> (<span style="color: #996633;">$content</span> <span style="color: #333333;">=~</span> <span style="background-color: #fff0ff; color: black;">m/Numarul/s</span>) {
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">'Am gasit linia Numarul'</span>;
<span style="color: #007020;">local</span> <span style="color: #996633;">$_</span><span style="color: #333333;">=</span><span style="color: #007020;">shift</span>;
<span style="color: #888888;">#<td style="padding:10px;" align="right"><span id="ctl00_cphBody_lblCurrentOperator">Operator curent:</span></td></span>
<span style="color: #888888;">#<td style="color:red;padding:10px; font-weight:bold;"><a id="ctl00_cphBody_lnkOperator">RCS &amp; RDS</a></td></span>
<span style="background-color: #fff0ff; color: black;">m{<a id="ctl00_cphBody_lnkOperator">\s+</a>(\d+)}</span> <span style="color: #333333;">||</span> <span style="color: #007020;">die</span>;
<span style="color: #008800; font-weight: bold;">return</span> <span style="color: #996633;">$1</span>;
}<span style="color: #008800; font-weight: bold;">else</span>{
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Nu am gasit linia"</span>;
}
<span style="color: #008800; font-weight: bold;">if</span> (<span style="color: #996633;">$content</span> <span style="color: #333333;">=~</span> <span style="background-color: #fff0ff; color: black;">m/id="ctl00_cphBody_lnkOperator"/s</span>) {
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">'Am gasit linia Numarul'</span>;
}<span style="color: #008800; font-weight: bold;">else</span>{
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Nu am gasit linia"</span>;
} </pre>
</div>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #888888;">#!/usr/bin/perl -w</span>
<span style="color: #008800; font-weight: bold;">use</span> strict;
<span style="color: #008800; font-weight: bold;">use</span> <span style="color: #0e84b5; font-weight: bold;">LWP::</span>Simple;
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$url</span> <span style="color: #333333;">=</span> <span style="background-color: #fff0f0;">"http://www.wunderground.com/cgi-bin/findweather/getForecast?"</span>
<span style="color: #333333;">.</span> <span style="background-color: #fff0f0;">"query="</span>;
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$ca</span> <span style="color: #333333;">=</span> get(<span style="background-color: #fff0f0;">"${url}95472"</span>); <span style="color: #888888;"># Sebastopol, California</span>
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$ma</span> <span style="color: #333333;">=</span> get(<span style="background-color: #fff0f0;">"${url}02140"</span>); <span style="color: #888888;"># Cambridge, Massachusetts</span>
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$ca_temp</span> <span style="color: #333333;">=</span> current_temp(<span style="color: #996633;">$ca</span>);
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$ma_temp</span> <span style="color: #333333;">=</span> current_temp(<span style="color: #996633;">$ma</span>);
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$diff</span> <span style="color: #333333;">=</span> <span style="color: #996633;">$ca_temp</span> <span style="color: #333333;">-</span> <span style="color: #996633;">$ma_temp</span>;
<span style="color: #008800; font-weight: bold;">print</span> <span style="color: #996633;">$diff</span> <span style="color: #333333;">></span> <span style="color: #0000dd; font-weight: bold;">0</span> ? <span style="background-color: #fff0f0;">"California"</span> : <span style="background-color: #fff0f0;">"Massachusetts"</span>;
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">" is warmer by "</span>, <span style="color: #007020;">abs</span>(<span style="color: #996633;">$diff</span>), <span style="background-color: #fff0f0;">" degrees F.\n"</span>;
<span style="color: #008800; font-weight: bold;">sub </span><span style="color: #0066bb; font-weight: bold;">current_temp</span> {
<span style="color: #007020;">local</span> <span style="color: #996633;">$_</span> <span style="color: #333333;">=</span> <span style="color: #007020;">shift</span>;
<span style="background-color: #fff0ff; color: black;">m{<tr ><td>Temperature</td>\s+<td><b>(\d+)}</span> <span style="color: #333333;">||</span> <span style="color: #007020;">die</span> <span style="background-color: #fff0f0;">"No temp data?"</span>;
<span style="color: #008800; font-weight: bold;">return</span> <span style="color: #996633;">$1</span>;
}
</pre>
</div>
<br /></div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0tag:blogger.com,1999:blog-6664001403810789524.post-84781841701422663042015-11-08T10:57:00.002+02:002015-11-08T11:00:32.417+02:00ATELIER -> Expresii regulate in Perl<div dir="ltr" style="text-align: left;" trbidi="on">
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #888888;">#!/usr/bin/perl</span>
<span style="color: #008800; font-weight: bold;">use</span> warnings;
<span style="color: #008800; font-weight: bold;">use</span> strict;
<span style="color: #888888;">#---EXPRESII REGULATE IN PERL---</span>
<span style="color: #888888;"># OPERATORUL: =~ cautarea unui sablon intr-un text dat true </span>
<span style="color: #888888;">#daca gaseste si false daca nu</span>
<span style="color: #008800; font-weight: bold;">if</span> (<span style="background-color: #fff0f0;">"Salut Romania"</span> <span style="color: #333333;">=~</span><span style="background-color: #fff0ff; color: black;"> /Salut/</span>){
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Am gasit Salut\n"</span>;
}<span style="color: #008800; font-weight: bold;">else</span>{
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Nu am gasit Salut\n"</span>;
}
<span style="color: #888888;"># Daca salut cu s mic</span>
<span style="color: #008800; font-weight: bold;">if</span> (<span style="background-color: #fff0f0;">"salut Romania"</span> <span style="color: #333333;">=~</span><span style="background-color: #fff0ff; color: black;"> /Salut/</span>){
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Am gasit Salut\n"</span>;
}<span style="color: #008800; font-weight: bold;">else</span>{
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Nu am gasit Salut\n"</span>;
}
<span style="color: #888888;"># OPERATORUL: !~ este inversul lui =~</span>
<span style="color: #008800; font-weight: bold;">if</span> (<span style="background-color: #fff0f0;">"Salut Romania"</span> <span style="color: #333333;">!~</span> <span style="background-color: #fff0ff; color: black;">/Salut/</span>){
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Am gasit Salut\n"</span>;
}<span style="color: #008800; font-weight: bold;">else</span>{
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Nu am gasit Salut\n"</span>;
}
<span style="color: #888888;"># Inlocuirea cuvantului cautat cu o variabila</span>
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$var</span> <span style="color: #333333;">=</span> <span style="background-color: #fff0f0;">"Salut"</span>;
<span style="color: #008800; font-weight: bold;">if</span> (<span style="background-color: #fff0f0;">"Salut Romania"</span> <span style="color: #333333;">=~</span><span style="background-color: #fff0ff; color: black;"> /$var/</span>){
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Am gasit Salut\n"</span>;
}<span style="color: #008800; font-weight: bold;">else</span>{
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Nu am gasit Salut\n"</span>;
}
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$text</span> <span style="color: #333333;">=</span> <span style="background-color: #fff0f0;">"acestA ESTE UN TEXT</span>
<span style="background-color: #fff0f0;"> ce se intinde pe mai multe linii</span>
<span style="background-color: #fff0f0;"> dupa cum vedeti"</span>;
<span style="color: #888888;"># ^ desemneaza inceputul de sir, $ desemneaza sfarsitul de sir</span>
<span style="color: #888888;"># s trateaza sirul ca find stocat pe o singura linie</span>
<span style="color: #996633;">$text</span> <span style="color: #333333;">=~</span><span style="background-color: #fff0ff; color: black;"> /(^.*a.*$)/s</span>;
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"\"$1\"\n"</span>;
<span style="color: #888888;"># m trateaza sirul ca o singura linie si nu mai citeste alte linii</span>
<span style="color: #996633;">$text</span> <span style="color: #333333;">=~</span><span style="background-color: #fff0ff; color: black;"> /(^.*a.*$)/m</span>;
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"\"$1\"\n"</span>;
<span style="color: #888888;"># g cauta in sir toate secventele care se potrivesc sablonului.</span>
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$nr</span> <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span>;
<span style="color: #008800; font-weight: bold;">while</span> (<span style="color: #996633;">$text</span> <span style="color: #333333;">=~</span><span style="background-color: #fff0ff; color: black;"> /a/g</span>){
<span style="color: #996633;">$nr</span><span style="color: #333333;">++</span>;
}
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Am gasit caracterul \'a\' de $nr ori.\n"</span>;
<span style="color: #888888;">#Afiseaza: Am gasit caracterul 'a' de 3 ori.</span>
</pre>
</div>
<br />
RESURSE:<br />
<a href="http://www.regex.ro/regex-in-perl/" target="_blank">http://www.regex.ro/regex-in-perl/</a></div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0tag:blogger.com,1999:blog-6664001403810789524.post-51843269597687229052015-11-08T08:47:00.002+02:002015-11-08T10:08:38.287+02:00ATELIER -> Perl caracteristici generale<div dir="ltr" style="text-align: left;" trbidi="on">
In randurile urmatoare vom incerca sa va prezentam caracteristicile principale ale limbajului:<br />
<ul style="text-align: left;">
<li><b>sintaxa</b> - limbajul Perl are o sinataxa case-senzitive, comentariile sunt precedate de caracterul # si fiecare instructiune este terminata cu ; acoladele sunt delimitatori de bloc de instructiuni {};</li>
<li><b>tipuri de date si variabile</b>; </li>
</ul>
O variabila reprezinta o zona de memorie in care se stocheaza o valoare de un anumit tip, acestei zone i-se asociaza un nume. Tipurile de date in Perl sunt fie scalare (simple) fie compuse (complexe).<br />
<br />
Tipurile de date scalare sunt numerele intregi si cele flotante (9.78) cat si un sir de caractere, iar acestea sunt initializate in cazul numerelor cu valoarea 0 iar in cazul caracterelor cu " " - un sir vid. Exemple:<br />
<br />
<div style="text-align: center;">
<b> $nr_telefon++;</b></div>
<div style="text-align: center;">
<b> $pi= 3.14152965;</b></div>
<div style="text-align: center;">
<b> $limbaj= "Perl";</b></div>
<br />
Flexibilitatea limbajului Perl permite delimitarea sirurilor si in acest mod:<br />
<br />
<div style="text-align: center;">
<b>q/Mihai Cornel/ #identic cu 'Mihai Cornel'</b></div>
<div style="text-align: center;">
<b>qq/Mihai Cornel/ #identic cu "Mihai Cornel"</b></div>
<div style="text-align: center;">
<b> qx/ls -la/ # executia unei comenzi, identic cu `ls -la` </b></div>
<div style="text-align: center;">
<b>qw/Perl Python Java/ # lista de cuvinte</b></div>
<br />
Tipurile complexe de date:<br />
<ul>
<li>tablourile indexate sunt liste ordonate de scalari, acesibile prin intermediul unui indice numeric. Numele unui vector va fi precedat de caracterul @ iar indicele va porni de la zero.</li>
</ul>
<div style="text-align: center;">
<b>@absenti[$nr_studenti] =20;</b></div>
<div style="text-align: center;">
<b>@linbaje=("Ada", "perl", "Java", "Python");</b></div>
<div style="text-align: center;">
<b>@mix=("Rosu", 123, $pi, "Radu");</b></div>
<div style="text-align: center;">
<br /></div>
Pentru accesarea unui element se inlocuieste caracteru @ cu $ pentru ca selectam un singur element: <b>$limbaj[2]</b>;<br />
<br />
Se poate accesa un subtablou specificand un interval si acesta va fi prefixat cu @;<br />
<br />
<div style="text-align: center;">
<b>print "Primele trei limbaje : @limbaje[0..2]\n";</b></div>
<br />
Pentru adaugarea si stergerea de elemente la sfarsitul unui tablou utilizam functiile predefinite push() si pop():<br />
<br />
<div style="text-align: center;">
<b>push(@limbaje, "JavaScript");</b></div>
<div style="text-align: center;">
<b>print "Ultimul limbaj eliminat:", pop(@limbaje);</b></div>
<br />
Daca dorim sa adaugam si sa stergem elemente la inceput utilizam functiile unshift() si shift();<br />
<br />
Lungimea unui tablou poate fi aflata cu (ambele constructii au acelasi efect):<br />
<br />
<div style="text-align: center;">
<b>$nr_limbaje = @limbaje;</b></div>
<div style="text-align: center;">
<b>$nr_limbaje = scalar(@limbaje);</b></div>
<br />
Vom obrtine indexul ultimului element:<br />
<br />
<div style="text-align: center;">
<b>$nr_limbaje = @#limbaje;</b></div>
<div style="text-align: center;">
<br /></div>
Pentru ca elementele unui tablou sa devina cuvinte ale unui sir de caractere, utilizam constructia:<br />
<br />
<div style="text-align: center;">
<b>$sir= "@limbaje";</b></div>
<br />
Elementele tabloului vor fi delimitate de un spatiu. Pentru aschimba delimitatorul:<br />
<br />
<div style="text-align: center;">
<b>$" = "|";</b></div>
<div style="text-align: center;">
<b>$sir = "@limbaje";</b></div>
<div style="text-align: center;">
<b>print $sir, "\n";</b></div>
<br />
Tablourile pot fi utilizate si in partea stanga a unei atribuiri;<br />
<br />
<div style="text-align: center;">
<b>($primul, $al_doilea)= @limbaje;</b></div>
<div style="text-align: center;">
<b>($prima, @restul)= @limbaje;</b></div>
<div style="text-align: center;">
<br /></div>
Variabila $primul va primi valoarea primului element al tabloului @limbaje, iar $al_doilea valoarea celui de-al doilea element din tablou. A doua linie, $prima ia valoarea primului element din tablou, iar @restul va fi un tablou continand restul de elemente din tabloul @limbaje.<br />
<br />
Atribuirile multiple de variabile scalare se poate face in acest mod:<br />
<div style="text-align: center;">
<b>($oameni, $animale) = ($romani, 123);</b></div>
<div style="text-align: center;">
<br /></div>
Avand acelasi efect cu:<br />
<div style="text-align: center;">
<b> $oameni = $romani;</b></div>
<div style="text-align: center;">
<b>$animale = 123;</b></div>
<div style="text-align: center;">
<br /></div>
<br />
<ul style="text-align: left;"></ul>
<ul style="text-align: left;">
<li>tablouri asociative (hash) - sunt perechi cheie valoare declarate cu caracterul % </li>
</ul>
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #888888;">#!/usr/bin/perl</span>
<span style="color: #008800; font-weight: bold;">use</span> warnings;
<span style="color: #008800; font-weight: bold;">use</span> strict;
<span style="color: #888888;">#use utf8;</span>
<span style="color: #888888;">#---------------------------------------------------------------------</span>
<span style="color: #888888;"># Acesta este un tablou asociativ (hash) format dintr-o cheie si o valoare.</span>
<span style="color: #888888;"># Mai jos aveti codurile oraselor din Romania cheia este un nr. iar valoare </span>
<span style="color: #888888;">#este un string. Cheile trebuie sa fie unice.</span>
<span style="color: #888888;">#-------------------------------------------------------------------------</span>
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">%codul</span> <span style="color: #333333;">=</span> (
<span style="color: #0000dd; font-weight: bold;">1</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'București'</span>,
<span style="color: #0000dd; font-weight: bold;">30</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Suceava'</span>,
<span style="color: #0000dd; font-weight: bold;">31</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Botoșani'</span>,
<span style="color: #0000dd; font-weight: bold;">32</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Iași'</span>,
<span style="color: #0000dd; font-weight: bold;">33</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Neamț'</span>,
<span style="color: #0000dd; font-weight: bold;">34</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Bacău'</span>,
<span style="color: #0000dd; font-weight: bold;">35</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Vaslui'</span>,
<span style="color: #0000dd; font-weight: bold;">36</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Galați'</span>,
<span style="color: #0000dd; font-weight: bold;">37</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Vrancea'</span>,
<span style="color: #0000dd; font-weight: bold;">38</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Buzău'</span>,
<span style="color: #0000dd; font-weight: bold;">39</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Brăila'</span>,
<span style="color: #0000dd; font-weight: bold;">40</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Tulcea'</span>,
<span style="color: #0000dd; font-weight: bold;">41</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Constanța'</span>,
<span style="color: #0000dd; font-weight: bold;">42</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Călărași'</span>,
<span style="color: #0000dd; font-weight: bold;">43</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Ialomița'</span>,
<span style="color: #0000dd; font-weight: bold;">44</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Prahova'</span>,
<span style="color: #0000dd; font-weight: bold;">45</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Dâmbovița'</span>,
<span style="color: #0000dd; font-weight: bold;">46</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Giurgiu'</span>,
<span style="color: #0000dd; font-weight: bold;">47</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Teleorman'</span>,
<span style="color: #0000dd; font-weight: bold;">48</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Argeș'</span>,
<span style="color: #0000dd; font-weight: bold;">49</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Olt'</span>,
<span style="color: #0000dd; font-weight: bold;">50</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Vâlcea'</span>,
<span style="color: #0000dd; font-weight: bold;">51</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Dolj'</span>,
<span style="color: #0000dd; font-weight: bold;">52</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Mehedinți'</span>,
<span style="color: #0000dd; font-weight: bold;">53</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Gorj'</span>,
<span style="color: #0000dd; font-weight: bold;">54</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Hunedoara'</span>,
<span style="color: #0000dd; font-weight: bold;">55</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Caraș-Severin'</span>,
<span style="color: #0000dd; font-weight: bold;">56</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Timiș'</span>,
<span style="color: #0000dd; font-weight: bold;">57</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Arad'</span>,
<span style="color: #0000dd; font-weight: bold;">58</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Alba'</span>,
<span style="color: #0000dd; font-weight: bold;">59</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Bihor'</span>,
<span style="color: #0000dd; font-weight: bold;">60</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Sălaj'</span>,
<span style="color: #0000dd; font-weight: bold;">61</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Satu Mare'</span>,
<span style="color: #0000dd; font-weight: bold;">62</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Maramureș'</span>,
<span style="color: #0000dd; font-weight: bold;">63</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Bistrița-Năsăud'</span>,
<span style="color: #0000dd; font-weight: bold;">64</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Cluj'</span>,
<span style="color: #0000dd; font-weight: bold;">65</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Mureș'</span>,
<span style="color: #0000dd; font-weight: bold;">66</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Harghita'</span>,
<span style="color: #0000dd; font-weight: bold;">67</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Covasna'</span>,
<span style="color: #0000dd; font-weight: bold;">68</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Brașov'</span>,
<span style="color: #0000dd; font-weight: bold;">69</span> <span style="color: #333333;">=></span> <span style="background-color: #fff0f0;">'Sibiu'</span>,
);
<span style="color: #888888;"># Aici obtinem valorile pentru chei $codul{23}. Intre acolade sunt specificate </span>
<span style="color: #888888;">#doar numele de chei(aici numere) </span>
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Codul 37 este pentru $codul{37}.\n"</span>;
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Codul 39 este pentru $codul{39}.\n"</span>;
<span style="color: #888888;"># Aceste liste pot fi iterate cu ajutorul instructiunii foreach, iar functia each()</span>
<span style="color: #888888;">#returneaza o pereche cheie-valoare</span>
<span style="color: #008800; font-weight: bold;">while</span>((<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$codul</span>, <span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$orasul</span>) <span style="color: #333333;">=</span> <span style="color: #007020;">each</span>(<span style="color: #996633;">%codul</span>)){
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Codul $codul este pentru $orasul.\n"</span>;
}
<span style="color: #888888;"># Adaugarea de elemente se poate face prin</span>
<span style="color: #996633;">$codul</span>{<span style="color: #0000dd; font-weight: bold;">70</span>}<span style="color: #333333;">=</span><span style="background-color: #fff0f0;">"Crevedia"</span>;
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Codul 70 este pentru $codul{70}.\n"</span>;
<span style="color: #888888;"># Un element se poate sterge cu functia delete(), iar existenta unui element</span>
<span style="color: #888888;">#cu exists()</span>
<span style="color: #888888;">#if exists ($codul{55}) {</span>
<span style="color: #888888;"># delete($codul{55});</span>
<span style="color: #888888;">#}</span>
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Codul 55 este pentru $codul{55}.\n"</span>;
<span style="color: #888888;"># Pentru sortarea unui tablou se utilizeaza sort() iar pentru inversare</span>
<span style="color: #888888;">#reverse()</span>
</pre>
</div>
<br />
<br /></div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0tag:blogger.com,1999:blog-6664001403810789524.post-78546880959838300332015-11-07T18:35:00.001+02:002015-11-08T12:30:40.365+02:00ATELIER -> Interfata Perl pentru XML<div dir="ltr" style="text-align: left;" trbidi="on">
Modulele xml din CPAN se divid in trei mari categorii:<br />
1.interfete intre xml si structura de date a Perl;<br />
2.module care implementeaza o interfata API pentru xml;<br />
3.module care simplifica lucrul cu xml.<br />
Desi utilizarea xml cunoaste o mare varietate de formate, marea majoritate a lucrului cu aceste formate se divide in doua mari grupe - extragerea datelor din documentele xml, si crearea de documente xml utilizand date din alte formate.<br />
<br />
Module care asigura interfata de lucru cu xml.<br />
<a href="https://metacpan.org/pod/distribution/XML-LibXML/LibXML.pod" target="_blank">XML::LibXML</a>; - este utilizat in codul de mai jos<br />
XML::Feed; -<br />
<br />
Data: Duminica 08:11:2015<br />
Sa presupunem ca avem fila xml:<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #007700;"><breakfast_menu></span>
<span style="color: #007700;"><food></span>
<span style="color: #007700;"><name></span>Belgian Waffles<span style="color: #007700;"></name></span>
<span style="color: #007700;"><price></span>$5.95<span style="color: #007700;"></price></span>
<span style="color: #007700;"><description></span>Two of our famous Belgian Waffles with plenty of real maple syrup<span style="color: #007700;"></description></span>
<span style="color: #007700;"><calories></span>650<span style="color: #007700;"></calories></span> <span style="color: #007700;"></food></span>
<span style="color: #007700;"><food></span>
<span style="color: #007700;"><name></span>Strawberry Belgian Waffles<span style="color: #007700;"></name></span>
<span style="color: #007700;"><price></span>$7.95<span style="color: #007700;"></price></span>
<span style="color: #007700;"><description></span>Light Belgian waffles covered with strawberries and whipped cream<span style="color: #007700;"></description></span>
<span style="color: #007700;"><calories></span>900<span style="color: #007700;"></calories></span> <span style="color: #007700;"></food></span>
<span style="color: #007700;"><food></span>
<span style="color: #007700;"><name></span>Berry-Berry Belgian Waffles<span style="color: #007700;"></name></span>
<span style="color: #007700;"><price></span>$8.95<span style="color: #007700;"></price></span>
<span style="color: #007700;"><description></span>Light Belgian waffles covered with an assortment of fresh berries and whipped cream<span style="color: #007700;"></description></span>
<span style="color: #007700;"><calories></span>900<span style="color: #007700;"></calories></span> <span style="color: #007700;"></food></span>
<span style="color: #007700;"><food></span>
<span style="color: #007700;"><name></span>French Toast<span style="color: #007700;"></name></span>
<span style="color: #007700;"><price></span>$4.50<span style="color: #007700;"></price></span>
<span style="color: #007700;"><description></span>Thick slices made from our homemade sourdough bread<span style="color: #007700;"></description></span>
<span style="color: #007700;"><calories></span>600<span style="color: #007700;"></calories></span> <span style="color: #007700;"></food></span>
<span style="color: #007700;"><food></span>
<span style="color: #007700;"><name></span>Homestyle Breakfast<span style="color: #007700;"></name></span>
<span style="color: #007700;"><price></span>$6.95<span style="color: #007700;"></price></span>
<span style="color: #007700;"><description></span>Two eggs, bacon or sausage, toast, and our ever-popular hash browns<span style="color: #007700;"></description></span>
<span style="color: #007700;"><calories></span>950<span style="color: #007700;"></calories></span> <span style="color: #007700;"></food></span>
<span style="color: #007700;"></breakfast_menu></span>
</pre>
</div>
<br />
Urmatoarea fila este scriptul Perl pentru a prelucra acest XML:<br />
<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #888888;">#!/usr/bin/perl</span>
<span style="color: #008800; font-weight: bold;">use</span> warnings;
<span style="color: #008800; font-weight: bold;">use</span> strict;
<span style="color: #888888;"># Incarcarea filei pe care dorim sa o prelucram</span>
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$filename</span> <span style="color: #333333;">=</span> <span style="background-color: #fff0f0;">'simple.xml'</span>;
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Numele filei XML de incarcat: $filename.\n"</span>;
<span style="color: #888888;"># Incarcam in aceast fila modulul XML::LibXML</span>
<span style="color: #008800; font-weight: bold;">use</span> <span style="color: #0e84b5; font-weight: bold;">XML::</span>LibXML;
<span style="color: #888888;"># Creem un obiect $parser</span>
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$parser</span> <span style="color: #333333;">=</span> <span style="color: #0e84b5; font-weight: bold;">XML::</span>LibXML<span style="color: #333333;">-></span><span style="color: #008800; font-weight: bold;">new</span>();
<span style="color: #888888;"># Cerem obiectului $parser prin functia parse_file sa parcurga fila xml</span>
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$doc</span> <span style="color: #333333;">=</span> <span style="color: #996633;">$parser</span><span style="color: #333333;">-></span>parse_file(<span style="color: #996633;">$filename</span>);
<span style="color: #888888;"># Parcurgem elementele si le afisam prin functia print</span>
<span style="color: #008800; font-weight: bold;">foreach</span> <span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$book</span>(<span style="color: #996633;">$doc</span><span style="color: #333333;">-></span>findnodes(<span style="background-color: #fff0f0;">'/breakfast_menu/food'</span>)){
<span style="color: #008800; font-weight: bold;">my</span> (<span style="color: #996633;">$name</span>) <span style="color: #333333;">=</span> <span style="color: #996633;">$book</span><span style="color: #333333;">-></span>findnodes(<span style="background-color: #fff0f0;">'./name'</span>);
<span style="color: #008800; font-weight: bold;">my</span> (<span style="color: #996633;">$price</span>) <span style="color: #333333;">=</span> <span style="color: #996633;">$book</span><span style="color: #333333;">-></span>findnodes(<span style="background-color: #fff0f0;">'./price'</span>);
<span style="color: #008800; font-weight: bold;">print</span> <span style="color: #996633;">$name</span><span style="color: #333333;">-></span>to_literal,<span style="background-color: #fff0f0;">" "</span>, <span style="color: #996633;">$price</span><span style="color: #333333;">-></span>to_literal, <span style="background-color: #fff0f0;">"\n"</span>;
}
</pre>
</div>
<br />
Output dupa rularea scriptului Perl:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNBFHIhrnz4iqjPB2Ez53ygibO0gRgOF8xPywbTVHJb2dfzw51U13bvtv4RAjU27DGZhCz20UZ67PUWHtKKKOcQ3VRtm7ciX0HvIOKFmIms9XIMEVb597gcqJu0F3fhwOmdL6dhObspAMp/s1600/Screenshot+from+2015-11-08+12%253A16%253A18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="283" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNBFHIhrnz4iqjPB2Ez53ygibO0gRgOF8xPywbTVHJb2dfzw51U13bvtv4RAjU27DGZhCz20UZ67PUWHtKKKOcQ3VRtm7ciX0HvIOKFmIms9XIMEVb597gcqJu0F3fhwOmdL6dhObspAMp/s400/Screenshot+from+2015-11-08+12%253A16%253A18.png" width="400" /></a></div>
Resurse web:<br />
<a href="http://www.perlmonks.org/?node_id=490846" target="_blank">http://www.perlmonks.org/?node_id=490846</a></div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0tag:blogger.com,1999:blog-6664001403810789524.post-20224290503942987782015-11-07T10:13:00.000+02:002015-11-07T13:21:41.732+02:00ATELIER -> Scrierea unei file in Perl<div dir="ltr" style="text-align: left;" trbidi="on">
<!-- HTML generated using hilite.me --><br />
<div dir="ltr" id="docs-internal-guid-9165bf5e-e1ad-d3d1-2f6f-1443894da172" style="line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 34.666666666666664px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Scrierea și citirea unei file în Perl</span></div>
<br /><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Operatiunile cu file in Perl sunt:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Open</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Read</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Write</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Close.</span></div>
</li>
</ol>
<br /><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Deschiderea unei file - open()</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">open FILE</span><span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">,</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">"</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">filename</span><span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">.</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">txt</span><span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">"</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #000088; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">or</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #000088; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">die</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> $</span><span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">!;</span></div>
<div dir="ltr" style="margin-left: 0pt;">
<table style="border-collapse: collapse; border: none; width: 602px;"><colgroup><col width="*"></col><col width="*"></col><col width="*"></col><col width="*"></col></colgroup><tbody>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">mod</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">operator</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">creare</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">truncate(deletes)</span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">sterge continutul</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">read</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"><</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><br /></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><br /></td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">write</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">></span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">da</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">da</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">append</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">>></span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">da</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><br /></td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">read/write</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">+<</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><br /></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><br /></td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">read/write</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">+></span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">da</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">da</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">read/append</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">+>></span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">da</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><br /></td></tr>
</tbody></table>
</div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Functia open() permite acceptarea a 3 argumente si are forma:</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-indent: 36pt;">
<span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">open FILEHANDLER</span><span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">,</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> MODE</span><span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">,</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> EXPR</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span></div>
<br /><br /><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Urmatoarea linie de cod creaza fila daca nu există, iar daca exista sterge vechiul conținut si adauga continut nou:</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">open FILE</span><span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">,</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">">",</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">"</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">filename</span><span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">.</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">txt</span><span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">"</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #000088; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">or</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #000088; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">die</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> $</span><span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">!;</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Acaeasta linie utilizeaza codarea pt literele romanesti, î, ț etc.:</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">open FILE, ">:utf8", "libertatea.txt" or die $!;</span></div>
<br /><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Consolas; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Cele trei argumente pot fi combinate ca in urmatorul exemplu:</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">open FILE</span><span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">,</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">"></span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">filename</span><span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">.</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">txt</span><span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">"</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #000088; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">or</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #000088; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">die</span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> $</span><span style="background-color: transparent; color: #666600; font-family: Consolas; font-size: 12px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">!;</span></div>
<br /><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Consolas; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Citirea filelor</span></div>
<br /><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Consolas; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Daca doriti citirea unei file linie cu linie:</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Consolas; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline;">my @line = <FILE></span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> fila a fost deschisa aceasta va stoca intr-o linie continutul in @line. Daca fila este mai mare aceasta poate fi parcursa linie cu linie:</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Consolas; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline;">while (<File>) {</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Consolas; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline;">print $_;</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Consolas; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Consolas; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline;">}</span></div>
<br /><br /><br /><h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 26.666666666666664px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Bibliografie:</span></h1>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://www.perlfect.com/articles/perlfile.shtml" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline;">http://www.perlfect.com/articles/perlfile.shtml</span></a></div>
<br /><!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;"> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: #888888;">#!/usr/bin/perl</span>
<span style="color: #888888;"># Pragmas</span>
<span style="color: #008800; font-weight: bold;">use</span> strict;
<span style="color: #008800; font-weight: bold;">use</span> warnings;
<span style="color: #888888;">=head1 Scrierea filelor in perl</span>
<span style="color: #888888;">Pentru a scrie o fila in perl este necesara deschiderea acesteia si pentru acesta</span>
<span style="color: #888888;">perl ofera functia open().</span>
<span style="color: #888888;">=cut</span>
<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$numeleFilei</span> <span style="color: #333333;">=</span> <span style="background-color: #fff0f0;">'report.txt'</span>;
<span style="color: #007020;">open</span> (<span style="color: #008800; font-weight: bold;">my</span> <span style="color: #996633;">$fm</span>, <span style="background-color: #fff0f0;">'>'</span>, <span style="color: #996633;">$numeleFilei</span>) <span style="color: black; font-weight: bold;">or</span> <span style="color: #007020;">die</span> <span style="background-color: #fff0f0;">"Fila nu sa deschis"</span>;
<span style="color: #008800; font-weight: bold;">print</span> <span style="color: #996633;">$fm</span> <span style="background-color: #fff0f0;">"Aceasta este fila $numeleFilei scrisa de Perl open()"</span>;
<span style="color: #888888;"># Urmatoarea linie de cod va inchide scrierea filei.</span>
<span style="color: #007020;">close</span> <span style="color: #996633;">$fm</span>;
<span style="color: #888888;">#Aceasta linie afiseaza in terminal reusita operatiei</span>
<span style="color: #008800; font-weight: bold;">print</span> <span style="background-color: #fff0f0;">"Operatia de scriere s-a terminat\n"</span>;
<span style="color: #888888;">=head2</span>
<span style="color: #888888;">Functia open() are trei parametri: variabila scalar $fm definita chiar in functia open(),</span>
<span style="color: #888888;">al doilea parametru este semnul > care indica deschiderea filei pt scriere si al treilea</span>
<span style="color: #888888;">parametru este numele filei care va fi scrisa.</span>
<span style="color: #888888;">Parametrul $fm este pus in functia print() ca prim parametru si aceasta va scrie fila.</span>
<span style="color: #888888;">=cut</span>
</pre>
</td></tr>
</tbody></table>
</div>
#!/usr/bin/perl<br />
# Pragmas<br />
use strict;<br />
use warnings;<br />
<br />
=head1 Scrierea filelor in perl<br />
<br />
Pentru a scrie o fila in perl este necesara deschiderea acesteia si pentru acesta<br />
perl ofera functia open().<br />
<br />
=cut<br />
my $numeleFilei = 'report.txt';<br />
open (my $fm, '>', $numeleFilei) or die "Fila nu sa deschis";<br />
print $fm "Aceasta este fila $numeleFilei scrisa de Perl open()";<br />
# Urmatoarea linie de cod va inchide scrierea filei.<br />
close $fm;<br />
#Aceasta linie afiseaza in terminal reusita operatiei<br />
print "Operatia de scriere s-a terminat\n";<br />
<br />
=head2<br />
<br />
Functia open() are trei parametri: variabila scalar $fm definita chiar in functia open(),<br />
al doilea parametru este semnul > care indica deschiderea filei pt scriere si al treilea<br />
parametru este numele filei care va fi scrisa.<br />
<br />
Parametrul $fm este pus in functia print() ca prim parametru si aceasta va scrie fila.<br />
<br />
=cut<br />
<br />
Resurse:<br />
<a href="http://www.perlfect.com/articles/perlfile.shtml" target="_blank">http://www.perlfect.com/articles/perlfile.shtml </a></div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0tag:blogger.com,1999:blog-6664001403810789524.post-72553012076282574342015-11-07T09:10:00.000+02:002015-11-07T09:41:19.542+02:00RESURSE -> Aici aveti site-uri unde puteti obtine resurse<div dir="ltr" style="text-align: left;" trbidi="on">
SITEURI:<br />
<a href="https://www.perl.org/" target="_blank">https://www.perl.org/</a><br />
Este site-ul oficial de unde puteti accesa documentatie.<br />
<br />
<a href="http://www.perlmonks.org/?node_id=431702" target="_blank">http://www.perlmonks.org/?node_id=431702 </a><br />
Cum se realizeaza modulele pentru CPAN.<br />
<br />
SOCIALIZARE:<br />
<a href="https://plus.google.com/+Perlweekly/posts" target="_blank">https://plus.google.com/+Perlweekly/posts</a><br />
Resursa G+. </div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0tag:blogger.com,1999:blog-6664001403810789524.post-22453246886966057382015-11-07T08:47:00.004+02:002015-11-07T08:56:29.363+02:00ATELIER -> Primul program in Perl<div dir="ltr" style="text-align: left;" trbidi="on">
Pentru ca orice inceput are dorinta de a va familiariza cu limbajul de programare printr-un program simplu care de obicei este "Hello, World!". Pentru realizarea acestuia putem utiliza orice editor text simplu (Notepad, Gedit, Vim) sau un IDE pe care il recomand <a href="http://padre.perlide.org/" target="_blank">Padre</a>. Dupa instalare deschideti o fila si tastati urmatoarele linii de cod:<br />
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjFyRuVbRU6M055IGYeLwG46NbAJxVLCWh_NAn6C7N06Z4GKejI_bo3wRIgRA3yXFT21fpn7P1HunVnmbQCrZHZvtRpoeIJUdPmJfT801NXmifvH-R-Sc3W-3pc_N3lhjFzFAjeF1LHoya/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;">1: #!/usr/bin/perl
2: print "Salut si bine a-ti venit pe Perl World Romania!";
</code></pre>
<br />
Acesta este cel mai simplu program pe care orice incepator trebuie sa-l ruleze.</div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0tag:blogger.com,1999:blog-6664001403810789524.post-60324117907957290152015-11-07T07:49:00.002+02:002015-11-07T20:12:24.667+02:00Perl World Romania a fost lansat<div dir="ltr" style="text-align: left;" trbidi="on">
Cu deosebita placere va anuntam lansarea blogului Perl World Romania.<br />
<br />
Perl <b>(Practical Extraction and Report Language)</b> a fost creat pentru prelucrarea sofisticata a informatiilor textuale și îl are ca parinte pe Larry Wall la care s-a adaugat și alți programatori. Ca și Linux, Perl a crescut ajungand in acest moment la versiunea 5.22.0 și 27 de ani de existență.<br />
<br />
În proiectarea și dezvoltarea limbajului s-au avut in vedere urmatoarele principii:<br />
<ol style="text-align: left;">
<li><i>lucrurile simple să se poată realiza usor, iar cele complexe sa nu fie imposibil de implementat;</i></li>
<li><i>există mai multe modalitati de realizare a unui program, în functie de gradul de cunoaștere a limbajului de catre dezvoltatorii unui program.</i></li>
</ol>
Caracteristicile importante ale limbajului sunt:<br />
<ol style="text-align: left;">
<li><b>modularitatea</b> - Perl ofera suport pentru programarea procedurala cat și cea orientata obiect, poate fi extins cu ajutorul modulelor;</li>
<li><b>portabilitatea</b> - programele Perl se pot executa pe orice platforma fara modificari;</li>
<li><b>expresivitatea si puterea</b> - limbajul dispune de mecanisme puternice pentru manipularea datelor, prin intermediul expresiilor regulate si a tablourilor;</li>
<li><b>viteza de dezvoltare a aplicațiilor</b> - ciclul compilare executie depanare se poate realiza rapid.</li>
</ol>
Perl este un limbaj interpretat, programele Perl sunt scripturi destinate in special sa prelucreze, sa outomatizeze si sa integreze facilitațile oferite de un anumit sistem. Avand in vedere ca perl este un interpretor, prima linie de cod a unui fisier-sursa va trebui sa fie urmatoarea:<br />
<div style="text-align: justify;">
<b><u> #!/usr/bin/perl</u></b></div>
<div style="text-align: justify;">
Aceasta linie indica incarcatorului sistemului de operare locatia interpretorului Perl care poate fi aflata cu comanda <b>whereis perl </b>in terminal.</div>
<ol style="text-align: left;">
</ol>
În acest blog ne dorim sa discutam despre o serie de subiecte din lumea programarii in limbajul Perl, despre noutațile aparute, module utile care fac programarea mai usoara, despre o serie de autori romani din CPAN. La acestea adaugam si urmatoarele sectiuni:<br />
<ul style="text-align: left;">
<li>Atelier,</li>
<li>Module,</li>
</ul>
<ul style="text-align: left;"><ul>
<li><a href="https://metacpan.org/pod/XML::Simple" target="_blank">XML::Simple </a></li>
<li><a href="https://metacpan.org/pod/XML::Feed" target="_blank">XML::Feed </a></li>
</ul>
</ul>
<ul style="text-align: left;">
<li>Autori romani,</li>
<ul>
<li><a href="https://metacpan.org/author/MHCRNL" target="_blank">MHCRNL</a> </li>
</ul>
<li>Resurse,</li>
<li>Youtube.</li>
<ul>
<li><a href="https://www.youtube.com/watch?v=ijbnQpyl3EI" target="_blank">Learning haw to program Perl - lesson1 </a></li>
<li><div class="yt watch-title-container">
<a href="https://www.youtube.com/watch?v=zItaMaJjygI" target="_blank"><span class="watch-title " dir="ltr" id="eow-title" title="Vim for Perl Development">Vim for Perl Development</span></a></div>
</li>
</ul>
</ul>
<br />
Am început sa invat Perl acum trei saptamani si am realizat ca este important sa ai un loc unde sa poti scrie despre acest lucru si care sa fie si un indrumar pentru ceilalti care doresc sa invete acest limbaj de programare foarte accesibil pentru incepatori.<br />
<br />
Un foarte bun inceput in lumea Perl este blogul lui <a href="http://ro.perlmaven.com/perl-tutorial" target="_blank">Gabor Szabo</a> care aduce in lumina primii pasi spre a deveni un bun programator.<br />
<br />
Pentru a va familiariza cu limbajul perl puteti consulta pagina <a href="https://ro.wikipedia.org/wiki/Perl" target="_blank">Wikipedia</a> unde informatiile de inceput sunt foarte bine structurate. </div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0tag:blogger.com,1999:blog-6664001403810789524.post-78948216944125748432014-06-21T10:02:00.001+03:002014-06-21T10:22:54.310+03:00Sprachkurs deutsch 2 - articolul hotarat si numarul<div dir="ltr" style="text-align: left;" trbidi="on">
Când substantivul este la plural, dispare dinstinctia dintre <b>m.</b>(masculin),<b> f.</b>(feminin) si <b>n.</b>(neutru) iar <b>die</b> se foloseste pentru toate:<br />
<br />
<b>die Preise sind hoch</b> - preturile sunt mari<br />
<b>die Farben sind dunkel</b> - culorile sunt intunecate<br />
<b>die Hauser sind alt</b> - casele sunt vechi <br />
<br />
Rezumat:<br />
<br />
<i>m f n pl:mfn</i><br />
-------------------------------------------------------------<br />
<b>der die das die</b><br />
<span style="color: red;">deă di: das di: - pronuție </span><br />
<table style="text-align: left; width: 100%;" border="1" cellpadding="2"
cellspacing="2">
<tbody>
<tr>
<td style="vertical-align: top;">Sub. f adauga <span
style="font-weight: bold;">-n</span> / <span
style="font-weight: bold;">-en</span> la sg.<br>
</td>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">die Küche / die Küche<span
style="font-weight: bold;">n</span><br>
</td>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">die Zeitung / die Zeintug<span
style="font-weight: bold;">en</span><br>
</td>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">die Frau / die Frau<span
style="font-weight: bold;">en</span><br>
</td>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">die Mutter / die Mütter<br>
</td>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><br>
</td>
</tr>
</tbody>
</table>
<br>
</body>
</html>
<br />
<br /></div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0tag:blogger.com,1999:blog-6664001403810789524.post-3872913959134675642014-06-21T09:42:00.002+03:002014-06-21T09:50:23.688+03:00Sprachkurs deutsch 1<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/XQontGqwJJI?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/Xov1jBopvJA?feature=player_embedded' frameborder='0'></iframe></div>
<br /></div>
mihai cornelhttp://www.blogger.com/profile/13332304523445848778noreply@blogger.com0