середа, 9 березня 2016 р.

Скрипт клімату

Буду викладати по ходу всі свої perl-скрипти. Щоби вони не загубилися. А може і не тільки perl. У нас в комітеті появилася дівчина, яка знає с++. Гріх не скористатися такою нагодою..)

Цей конкретний скрипт створює таблицю клімату, використовуючи дані веб-сайту http://www.yr.no

Програма напіваавтоматична, тому що потрібно щоразу редагувати код.

#!/usr/bin/perl

$line = "January     -2.3°C     1.5°C     -5.6°C     7
February     -0.1°C     4.2°C     -3.3°C     7
March     4.7°C     10.0°C     0.7°C     7
April     11.1°C     17.3°C     5.7°C     8
May     16.6°C     22.9°C     10.9°C     9
June     19.8°C     26.2°C     13.8°C     8
July     21.9°C     28.5°C     15.7°C     6
August     21.3°C     28.2°C     15.3°C     5
September     17.4°C     24.5°C     11.8°C     5
October     11.1°C     17.7°C     6.2°C     4
November     5.0°C     9.6°C     1.6°C     8
December     0.1°C     3.5°C     -2.5°C     7";

$adress = 'http://www.yr.no/place/Romania/Mehedinti/23_August/statistics.html';
$nazva = '23 Аугуста';

if ($line =~ m/January     (.*)°C     (.*)°C     (.*)°C     (.*)/)
 {
   $jannorm = $1;
   $janwarm = $2;
   $jancold = $3;
   $janprec = $4;
 }
if ($line =~ m/February     (.*)°C     (.*)°C     (.*)°C     (.*)/)
 {
   $febnorm = $1;
   $febwarm = $2;
   $febcold = $3;
   $febprec = $4;
 }
if ($line =~ m/March     (.*)°C     (.*)°C     (.*)°C     (.*)/)
 {
   $marnorm = $1;
   $marwarm = $2;
   $marcold = $3;
   $marprec = $4;
 }
if ($line =~ m/April     (.*)°C     (.*)°C     (.*)°C     (.*)/)
 {
   $aprnorm = $1;
   $aprwarm = $2;
   $aprcold = $3;
   $aprprec = $4;
 }
if ($line =~ m/May     (.*)°C     (.*)°C     (.*)°C     (.*)/)
 {
   $maynorm = $1;
   $maywarm = $2;
   $maycold = $3;
   $mayprec = $4;
 }
if ($line =~ m/June     (.*)°C     (.*)°C     (.*)°C     (.*)/)
 {
   $junnorm = $1;
   $junwarm = $2;
   $juncold = $3;
   $junprec = $4;
 }
 if ($line =~ m/July     (.*)°C     (.*)°C     (.*)°C     (.*)/)
 {
   $julnorm = $1;
   $julwarm = $2;
   $julcold = $3;
   $julprec = $4;
 }
 if ($line =~ m/August     (.*)°C     (.*)°C     (.*)°C     (.*)/)
 {
   $augnorm = $1;
   $augwarm = $2;
   $augcold = $3;
   $augprec = $4;
 }
 if ($line =~ m/September     (.*)°C     (.*)°C     (.*)°C     (.*)/)
 {
   $sepnorm = $1;
   $sepwarm = $2;
   $sepcold = $3;
   $sepprec = $4;
 }
 if ($line =~ m/October     (.*)°C     (.*)°C     (.*)°C     (.*)/)
 {
   $octnorm = $1;
   $octwarm = $2;
   $octcold = $3;
   $octprec = $4;
 }
 if ($line =~ m/November     (.*)°C     (.*)°C     (.*)°C     (.*)/)
 {
   $novnorm = $1;
   $novwarm = $2;
   $novcold = $3;
   $novprec = $4;
 }
 if ($line =~ m/December     (.*)°C     (.*)°C     (.*)°C     (.*)/)
 {
   $decnorm = $1;
   $decwarm = $2;
   $deccold = $3;
   $decprec = $4;
 }

$avenorm = ($jannorm + $febnorm + $marnorm + $aprnorm + $maynorm + $junnorm + $julnorm + $augnorm + $sepnorm + $octnorm + $novnorm + $decnorm) / 12;
$aveprec = $janprec + $febprec + $marprec + $aprprec + $mayprec + $junprec + $julprec + $augprec + $sepprec + $octprec + $novprec + $decprec;
$avecold = ($jancold + $febcold + $marcold + $aprcold + $maycold + $juncold + $julcold + $augcold + $sepcold + $octcold + $novcold + $deccold) / 12;
$avewarm = ($janwarm + $febwarm + $marwarm + $aprwarm + $maywarm + $junwarm + $julwarm + $augwarm + $sepwarm + $octwarm + $novwarm + $decwarm) / 12;

$sernorm = sprintf("%.1f", $avenorm);
$sercold = sprintf("%.1f", $avecold);
$serwarm = sprintf("%.1f", $avewarm);

open(my $fd, ">>climate.txt");
print $fd "== Географія ==

=== Клімат ===

{{Клімат міста
|Місто_род=$nazva
|Джерело=[$adress www.yr.no]

| Січ_сер=$jannorm             | Січ_опади=$janprec
| Лют_сер=$febnorm             | Лют_опади=$febprec
| Бер_сер=$marnorm             | Бер_опади=$marprec
| Кві_сер=$aprnorm             | Кві_опади=$aprprec
| Тра_сер=$maynorm             | Тра_опади=$mayprec
| Чер_сер=$junnorm             | Чер_опади=$junprec
| Лип_сер=$julnorm             | Лип_опади=$julprec
| Сер_сер=$augnorm             | Сер_опади=$augprec
| Вер_сер=$sepnorm             | Вер_опади=$sepprec
| Жов_сер=$octnorm             | Жов_опади=$octprec
| Лис_сер=$novnorm             | Лис_опади=$novprec
| Гру_сер=$decnorm             | Гру_опади=$decprec
| Рік_сер=$sernorm             | Рік_опади=$aveprec

| Січ_сер_мін=$jancold         | Січ_сер_макс=$janwarm
| Лют_сер_мін=$febcold         | Лют_сер_макс=$febwarm
| Бер_сер_мін=$marcold         | Бер_сер_макс=$marwarm
| Кві_сер_мін=$aprcold         | Кві_сер_макс=$aprwarm
| Тра_сер_мін=$maycold         | Тра_сер_макс=$maywarm
| Чер_сер_мін=$juncold         | Чер_сер_макс=$junwarm
| Лип_сер_мін=$julcold         | Лип_сер_макс=$julwarm
| Сер_сер_мін=$augcold         | Сер_сер_макс=$augwarm
| Вер_сер_мін=$sepcold         | Вер_сер_макс=$sepwarm
| Жов_сер_мін=$octcold         | Жов_сер_макс=$octwarm
| Лис_сер_мін=$novcold         | Лис_сер_макс=$novwarm
| Гру_сер_мін=$deccold         | Гру_сер_макс=$decwarm
| Рік_сер_мін=$sercold         | Рік_сер_макс=$serwarm

|br=}}
EndCard
;"

Немає коментарів:

Дописати коментар