PERL/C3/Access-Modifiers-in-PERL/Malayalam

From Script | Spoken-Tutorial
Jump to: navigation, search
Time
Narration
00:01 Access Modifiers in PERL എന്ന വിഷയത്തിലുള്ള Spoken Tutorial ലേക്കു സ്വാഗതം
00:07 ഈ ട്യൂട്ടോറിയലില്‍ നമ്മള്‍ പഠിക്കാന്‍ പോകുന്നത്:

വേരിയബിള്‍സി ന്റെ പ്രാധാന്യം, Private വേരിയബിള്‍സ്, 'Dynamically scoped വേരിയബിള്‍സ്, Global വേരിയബിള്‍സ്.

00:19 ഈ ട്യൂട്ടോറിയലിനു വേണ്ടി ,ഞാന്‍ ഉപയോഗിക്കുന്നത്:

Ubuntu Linux 12.04 ഓപറേറ്റിങ്ങ് സിസ്റ്റവും, Perl 5.14.2, കൂടാതെ gedit ടെക്സ്റ്റ് എഡിറ്ററും ആണ്

00:32 നിങ്ങള്‍ക്കിഷ്ടപ്പെട്ട ഏതു ടെക്സ്റ്റ് എഡിറ്റര്‍ വേണമെങ്കിലും ഉപയോഗിക്കാം
00:36 നിങ്ങള്‍ക്കു Perl പ്രോഗ്രാമ്മിങ്ങില്‍ അടിസ്ഥാന വിവരം ഉണ്ടായിരിക്കേണ്ടതാണ്.
00:40 അതില്ലെങ്കില്‍ Perl നെ കുറിച്ചുള്ള ഉചിതമായ സ്പോക്കണ്‍ ട്യൂട്ടോറിയല്‍ കാണുവാന്‍ spoken tutorial വെബ്സൈറ്റ് സന്ദര്‍ശിക്കുക.
00:47 നമ്മുക്ക് വേരിയബിള്‍സിന്റെ പ്രാധാന്യത്തെ ക്കുറിച്ചുള്ള ആമുഖത്തിലേക്കു കടക്കാം.
00:51 ഒരു കോഡിനകത്ത് ഏതു പരിധിവരെയാണു ഒരു വേരിയബിള്‍നു വിവിധ മൂല്യങ്ങള്‍ സ്വീകരിക്കാന്‍ കഴിയുന്നത്, ആ പരിധിയെയാണു ആ വേരിയബിള്‍ ന്റെ scope എന്നു പറയുന്നത്.
00:58 മറ്റൊരു രീതിയില്‍ പറയുകയാണെങ്കില്‍ ഇത് വേരിയബിളിന്റെ ദ്രിശ്യപരതയെ സൂചിപ്പിക്കുന്നു
01:03 ആദ്യമായി നമുക്ക് Perl. ലെ my, local കൂടാതെ our മോഡിഫയറുകളെക്കുറിച്ചു പഠിക്കാം.
01:10 my എന്നാല്‍ Private variables എന്നാകുന്നു.
01:13 local എന്നാല്‍ Dynamically scoped variables എന്നാകുന്നു.
01:17 our എന്നാല്‍ Global variables എന്നാകുന്നു.
01:20 my എന്ന പദം കൊണ്ട് വാഖ്യാനിക്കപ്പെട്ടിട്ടുള്ള വേരിയബളുകള്‍ക്ക് ആ blockനു പുറത്ത് സാധുത ഉണ്ടായിരിക്കുന്നതല്ല.
01:28 പ്രത്യേകിച്ച് ഒരു മൂല്യവും നല്കാതെ തന്നെ ഒരു വേരിയബളിനെ ഈ വിധത്തില്‍ പ്രഖ്യാപിക്കാന്‍ കഴിയും : my $fvalue semicolon
01:37 ഒരു പ്രത്യേക വില നല്‍കിയും വേരിയബളിനെ പ്രഖ്യാപിക്കാന്‍ കഴിയും.
01:43 my $fValue = 1 semicolon
01:48 'my $fname = ഇരട്ട ഉദ്ധരണികളില്‍ Rahul semicolon
01:55 ഒരേ my പ്രസ്താവന യില്‍ വരുന്ന വിവിധ വേരിയബിളുകള്‍ പ്രഖ്യാപിക്കാനുള്ള സിന്‍റ്റാക്സ് താഴെ പറയുന്ന വിധത്തില്‍ ആണ്.
02:02 my തുറന്ന ബ്രാക്കറ്റ് $fname കോമ $lname കോമ $age ബ്രാക്കറ്റ് ക്ലോസ് ചെയ്യുക അര്‍ദ്ധവിരാമം.
02:12 നമ്മുക്ക് ഇനി ഒരു സാമ്പിള്‍ പ്രോഗ്രാം ഉപയോഗിച്ച് private വേരിയബിളുകളെ കുറിച്ചു മനസ്സിലാക്കാം
02:17 എന്റെ കയ്യില്‍ ഇതിനകം തന്നെ ഒരു സാമ്പിള്‍ പ്രോഗ്രാം ഉണ്ട്. ഞാന്‍ അതിനെ 'gedit' Text editor ഉപയോഗിച്ചു തുറക്കാന്‍ പോകുന്നു.
02:24 terminal തുറക്കുക , എന്നിട്ടു gedit scope hyphen my dot pl ampersand എന്നു ടൈപ്പ് ചെയ്യുക, അതിനു ശേഷം Enter അമര്‍ത്തുക.
02:34 Scope-my dot pl എന്ന ഫയല്‍ ഇപ്പോള്‍ gedit. ഇല്‍ തുറന്നിരിക്കുന്നു
02:39 സ്ക്രീനില്‍ കാണിച്ചിരിക്കുന്ന കോഡ് അതേ പോലെ ടൈപ്പ് ചെയ്യുക. ആ കോഡ് ഞാനിപ്പോള്‍ വിശദീകരിക്കാം.
02:46 ഇവിടെ ഞാന്‍ 'my' കീവേഡ് ഉപയോഗിച്ചുകൊണ്ട് $fname എന്ന private വേരിയബിള്‍ പ്രഖ്യാപിച്ചിരിക്കുന്നു.
02:52 കൂടാതെ, അതിനു "Raghu" എന്ന മൂല്യം നല്കിയിരിക്കുന്നു.
02:56 ഈ ബ്ലോക്കിനകത്ത്, print എന്ന പ്രസ്താവന fname എന്ന വേരിയബിളിനകത്തുള്ള മൂല്യത്തെ പ്രിന്റ് ചെയ്യുന്നു. അതാണ് "Raghu".
03:04 അടുത്ത ബ്ലോക്കില്‍ ,ഞാന്‍ അതേ $fname. എന്ന private വേരിയബിളിനു "Other" എന്ന മൂല്യം നല്കിയിരിക്കുന്നു.
03:11 അതുകൊണ്ട്, ഈ നിശ്ചിത ബ്ലോക്കിലുള്ള print statement എന്ന പ്രസ്താവന "Other" എന്നു പ്രിന്റ് ചെയ്യും.
03:17 ഈ പ്രോഗ്രാമിലുള്ള അവസാനത്തെ print statement എന്ന പ്രസ്താവന ഒരു ഔട്ട്പുട്ടും തരുന്നതല്ല.
03:23 ഇതിനു കാരണം , നേരത്തെ നിര്‍വചിച്ചിട്ടുള്ള ബ്ലോക്കുകളുടെ പരിധിക്കുപ്പുറത്തു fname നു മൂല്യമൊന്നും നല്കിയിട്ടില്ല.
03:32 ഇനി, ഫയല്‍ സേവ് ചെയ്യാനായി Ctrl+S അമര്‍ത്തുക.
03:37 നമ്മുക്കിപ്പോള്‍ പ്രോഗ്രാം എക്സിക്യൂട്ട് ചെയ്യാം.
03:40 terminal ലേക്കു തിരിച്ചുപോയി, perl scope hyphen my dot pl എന്നു ടൈപ്പ് ചെയ്യുക, എന്നിട്ടു Enter അമര്‍ത്തുക.
03:49 ഔട്ട്പുട്ട് പ്രദര്‍ശിപ്പിച്ചിരിക്കുന്നു:

"Block 1: Raghu" "Block 2: Other" "Outside Block: " ഔട്ട്പുട്ട് ഇല്ല.

03:59 അതായത്, 'my' variable എന്ന വേരിയബിളിന്റെ പ്രാധാന്യം ഒരു കോഡിന്റെ നിശ്ചിത ബ്ലോക്കിനകത്തു മാത്രം നിര്‍ണയിക്കപ്പെട്ടിരിക്കുന്നു.
04:06 ഇനി, നമ്മുക്ക് നിലവിലുള്ള പ്രോഗ്രാം അല്പം മാറ്റി നോക്കാം.
04:10 ഇനി നമ്മുക്ക് ബ്ലോക്കിനു പുറത്ത് അവസാനത്തെ print പ്രസ്താവനക്കു മുന്‍ പായി my $fname = within double quotes John semicolon എന്നു ചേര്‍ക്കാം. വരുത്തിയ മാറ്റങ്ങള്‍ സേവ് ചെയ്യുക
04:23 terminal ലേക്കു തിരിച്ചുപോയി മുമ്പത്തേതു പോലെ എക്സിക്യൂട്ട് ചെയ്യുക.
04:28 പ്രദര്‍ശിപ്പിച്ചിരിക്കുന്ന ഔട്ട്പുട്ടിനെ വിശകലനം ചെയ്യുക.
04:32 ഇപ്പോള്‍ നിങ്ങള്‍ക്കു 'my' വേരിയബിളിന്റെ ഉപയോഗപരിധി ബ്ലോക്കിനു അകത്തും പുറത്തും എങ്ങനെയാണെന്ന് മനസ്സിലായി എന്നു പ്രതീക്ഷിക്കുന്നു.
04:41 അടുത്തതായി നമ്മള്‍ കാണാന്‍ പോകുന്നത് Perl ലെ dynamically scoped variable
04:47 Local കീവേഡ് ഒരുglobal വേരിയബിളിനു ഒരു താത്കാലികപരിധി നല്‍കുന്നു.
04:52 യതാര്‍ത്ഥ ബ്ലോക്കില്‍ നിന്നും വിളിക്കുന്ന ഏതൊരു function ഉം ഈ വേരിയബിള്‍ ദ്രിശ്യമായിരിക്കും
04:58 നിങ്ങള്‍ക്കു ഒരു local വേരിയബിളിനെ ഇങ്ങനെയും പ്രഖ്യാപിക്കാം:

local $fValue = 100 semicolon local $fname = within double quotes "Rakesh" semicolon

05:13 ഒരു മാത്രുക പ്രോഗ്രാം ഉപയോഗിച്ചുകൊണ്ട് നമ്മുക്കിതു മനസിലാക്കാം .
05:17 terminal തുറക്കുക എന്നിട്ട് gedit scope hyphen local dot pl ampersand എന്നു ടൈപ്പ് ചെയ്യുക. അതിനു ശേഷം Enter അമര്‍ത്തുക.
05:27 ഇത് geditല്‍ scope hyphen local dot pl എന്ന ഫയല്‍ തുറക്കും .
05:33 സ്ക്രീനില്‍ കാണിച്ചിരിക്കുന്ന കോഡ് അതേ പോലെ ടൈപ്പ് ചെയ്യുക. ആ കോഡ് ഞാനിപ്പോള്‍ വിശദീകരിക്കാം.
05:40 ഇവിടെ, ആദ്യ വരിയില്‍ , നമ്മള്‍ $fname എന്ന ഒരു വേരിയബിള്‍ പ്രഖ്യാപിക്കുകയും ആരംഭിക്കുകയും ചെയ്തിരിക്കുന്നു.
05:47 Welcome() എന്ന ഫങ്ക്ഷനകത്തു നമ്മള്‍ $fname എന്ന അതേ പേരുള്ള ഒരു local വേരിയബിള്‍ പ്രഖ്യാപിച്ചിരിക്കുന്നു.
05:54 വേരിയബിളിന്റെ പേരിനു മുന്നിലുള്ള local എന്ന കീവേഡ് ശ്രദ്ധിക്കുക.
05:59 കൂടാതെ ഈ വേരിയബിളിനു നമ്മള്‍ "Rakesh" എന്ന മൂല്യം നല്കിയിരിക്കുന്നു.
06:03 അതുകൊണ്ട് അടിസ്താനപരമായി, Welcome()എന്ന ഫങ്ക്ഷനകത്തു $fname ഒരു തത്കാലിക local വേരിയബിള്‍ ആയി മാറിയിരിക്കുന്നു. അതിനുശേഷം എന്ന Hello() ഫങ്ക്ഷനെ call ചെയ്തിരിക്കുന്നു.
06:15 Hello() എന്ന ഫങ്ക്ഷന്റെ നിര്‍വചനം ഇങ്ങനെയാകുന്നു.
06:18 പ്രോഗ്രാമിന്റെ അവസാനത്തില്‍ നമ്മള്‍ Welcome() കൂടാതെ Hello() എന്നീ രണ്ടു ഫങ്ക്ഷനുകളെയും വിളിച്ചിരിക്കുന്നു.
06:25 ഇനി, ഫയല്‍ സേവ് ചെയ്യാനായി Ctrl+S അമര്‍ത്തുക.
06:29 നമ്മുക്കിനി പ്രോഗ്രാം എക്സിക്യൂട്ട് ചെയ്യാം.
06:31 terminal ലേക്കു തിരിച്ചുപോയി, perl scope hyphen local.pl എന്നു ടൈപ്പ് ചെയ്യുക, എന്നിട്ടു Enter അമര്‍ത്തുക.
06:41 ഔട്ട്പുട്ട് പ്രദര്‍ശിപ്പിച്ചിരിക്കുന്നു:

"Hello, Rakesh"! "Hello, Welcome to Spoken tutorials!"

06:48 നമ്മുക്കിനി ഔട്ട്പുട്ടിനെ വിശകലനം ചെയ്യാം
06:51 local വേരിയബിളിനു മൂല്യം ​നല്കനായി Welcome() എന്ന ഫങ്ക്ഷന്‍ വിളിക്കുമ്പോള്‍ , Hello() എന്ന ഫങ്ക്ഷന്‍ അതിനകത്തുണ്ട്
06:59 Welcome()എന്ന ഫങ്ക്ഷനകത്തു $fname ന്റെ മൂല്യം "Rakesh" എന്നാകുന്നു.
07:04 ഇതിനു ശേഷം , Hello() എന്ന ഫങ്ക്ഷന്‍ $fname എന്ന വേരിയബിളിനു ഒരിക്കല്‍ക്കൂടി മൂല്യനിര്‍ ണയം നടത്തുന്നു.
07:11 പക്ഷെ ഇത്തവണ, $fname എന്ന വേരിയബിള്‍ ആരം ഭിച്ചിരിക്കുന്നത് "Welcome to spoken tutorials" എന്നാകുന്നു.
07:19 ഇതിനു Welcome() എന്ന ഫങ്ക്ഷ്നകത്തെ $fname എന്ന ലോക്കല്‍ വേരിയബിളിനു മൂല്യനിര്‍ ണയം നടത്താന്‍ കഴിയുന്നില്ല.
07:25 അതിനര്‍ ത്ഥം , Welcome()എന്ന ബ്ലോക്കിനു പുറത്തും ലോക്കല്‍ വേരിയബിള്‍ അതിന്റെ scope നിലനിര്‍ത്തുന്നു.
07:32 ഇനി നമ്മുക്ക് Perlലെ global വേരിയബിളുകളെക്കുറിച്ചു നോക്കാം.
07:38 ഒരു global variable നെ പ്രോഗ്രാമ്മിന്റെ എവിടെ വച്ചു വേണമെങ്കിലും മൂല്യനിര്‍ ണയം നടത്താന്‍ കഴിയും.
07:43 Global variables കളെ 'our' കീവേഡ് ഉപയോഗിച്ചു കൊണ്ട് പ്രഖ്യാപിച്ചിരിക്കുന്നു.
07:47 ഇതാ ചില ഉദാഹരണങ്ങള്‍:

our $fvalue = 100 semicolon </nowiki> our $fname =within double quotes Priya semicolon

08:01 ഇനി, നമ്മുക്കു global വേരിയബിളുകളുടെ പ്രവര്‍ത്തനോദാഹരണങ്ങളെ ക്കുറിച്ചു നോക്കാം.
08:06 terminal ലേക്കു തിരിച്ചുപോയി, gedit scope hyphen our dot pl ampersand എന്നു ടൈപ്പ് ചെയ്യുക, എന്നിട്ടു Enter അമര്‍ത്തുക.
08:16 ഇതുgedit ല്‍ scope hyphen our.pl എന്ന ഫയല്‍ തുറക്കും.
08:22 ഇനി ഞാനെഴുതിയ ഒരു മാത്രുക പ്രോഗ്രാം വിശദീകരിക്കാം.
08:27 100 എന്ന ആരംഭമൂല്യത്തോടുക്കൂടി our $i എന്ന ഗ്ലോബല്‍ വേരിയബിളും package main ഉം പ്രഖ്യാപിച്ചിരിക്കുന്നു..
08:37 package First എന്ന പ്രഖ്യാപനം ശ്രദ്ധിക്കുക.
08:40 അതിന്റേതായ namespaceഓടുക്കൂടിയ കോഡിന്റെ ശേഖരത്തെ ഒരു package എന്നു പറയുന്നു.
08:46 packagesകള്‍ ക്കിടയിലുള്ള variable name collisions നെ Namespace തടയുന്നു.
08:51 package നെയും namespace നെയും കുറിച്ച് ഭാവി ട്യൂട്ടോറിയലുകളില്‍ നമ്മുക്കു കൂടുതല്‍ പഠിക്കാം.
08:56 package First, ഇല്‍ ഗ്ലോബല്‍ വേരിയബിള്‍ "i" ക്കു കൊടുത്തിരിക്കുന്ന മൂല്യം 10 ആകുന്നു.
09:02 package Second, ഇല്‍ ഗ്ലോബല്‍ വേരിയബിള്‍ "i" ക്കു കൊടുത്തിരിക്കുന്ന മൂല്യം 20 ആകുന്നു.
09:08 package First variable ഉം കൂടാതെ package Second variableഉം main package ഉപയോഗിക്കുന്നു.
09:15 എന്റെ പ്രോഗ്രാമില്‍,എല്ലാ packagesലും "i" എന്ന അതേ വേരിയബിള്‍ പ്രഖ്യാപിച്ചിരിക്കുന്നു.
09:21 package variable പരാമര്‍ശിക്കുന്നത് package name colon colon variable name എന്ന രീതിയിലാണ്.
09:29 നമ്മുടെ ഉദാഹരണത്തില്‍, ഇത് $First colon colon i, $Second colon colon i എന്നാണ്.
09:39 നമ്മുക്ക് ഒരു ഫയലില്‍ ഒന്നില്‍ക്കൂടുതല്‍ packages ഉണ്ട്, കൂടാതെ ഗ്ലോബല്‍ വേരിയബിളിനു എല്ലാ packagesകളിലും പ്രവേശനം അനുവദിച്ചിരിക്കുന്നു.
09:47 ഇനി ഫയല്‍ സേവ് ചെയ്തു പ്രോഗ്രാം എക്സിക്യൂട്ട് ചെയ്യുക.
09:51 terminal ലേക്കു തിരിച്ചുപോയി, perl scope hyphen our dot pl എന്നു ടൈപ്പ് ചെയ്യുക, എന്നിട്ടു Enter അമര്‍ത്തുക.
09:59 terminalഇല്‍ ഔട്ട്പുട്ട് പ്രദര്‍ശിപ്പിച്ചിരിക്കുന്നു
10:03 ഔട്ട്പുട്ട് വിശകലനം ചെയ്തു നോക്കിയാല്‍ variable i ക്കു മൂല്യധാനം നടത്തിയിരിക്കുന്നത് എങ്ങനെയെന്നു നിങ്ങള്‍ ക്കു തന്നെ മനസ്സിലാക്കാന്‍ കഴിയും.
10:11 ഇതോടുകൂടി ഈ ട്യൂട്ടോറിയല്‍ അവസാനിക്കുന്നു. നമ്മുക്ക് ഉപസംഹരിക്കാം.
10:16 ഈ ട്യൂട്ടോറിയലില്‍ നമ്മള്‍ പഠിച്ച കാര്യങ്ങള്‍ വേരിയബളുകളുടെ പ്രാധാന്യം , private variablesകളുടെ പ്രഖ്യാപനം , global variables അവയുടെ ഉദാഹരണങ്ങള്‍ ഇവയാണ്.
10:29 കമ്പൈലേഷന്‍ വേഗത്തില്‍ നടക്കുന്നതിനാല്‍ localഎന്നതിനേക്കാള്‍ 'my' ഉപയോഗിക്കുന്നതാണ്‍ ഉചിതം
10:35 ഇവിടെ നിങ്ങള്‍ക്കുള്ള അസൈന്‍മെന്റ് ഇതാണ്
10:37 താഴെയുള്ള അസൈന്‍മെന്റിനു കോഡെഴുതി എക്സിക്യൂട്ട് ചെയ്യുക
10:42 ഒരു package നെ ആയി FirstModuleപ്രഖ്യാപിക്കുക
10:46 $age എന്ന ഒരു വേരിയബളിനെ our ആയി പ്രഖ്യാപിക്കുകകയും അതിനു 42 എന്ന വില നല്കുകയും ചെയ്യുക
10:52 വേറോരു പാക്കേജിനെ SecondModule ആയി പ്രഖ്യാപിക്കുക
10:56 $ageword എന്ന ഒരു വേരിയബളിനെ our ആയി പ്രഖ്യാപിക്കുകകയും അതിനു ഇരട്ട ഉദ്ദരണികളില്‍ "Forty-Two" എന്ന വില നല്കുകയും ചെയ്യുക
11:05 First()എന്ന ഒരു സബ്‌റൂട്ടീന്‍ പ്രഖ്യാപിക്കുക
11:08 ആ സബ്‌റൂട്ടീനിനകത്ത് local, my എന്നീ കീവേഡുകള്‍ ഉപയോഗിച്ച് രണ്ടു വേരിയബളുകളെ പ്രഖ്യാപിക്കുക
11:16 local $age = 52 അര്‍ദ്ധവിരാമം
11:20 my $ageword സമം ഇരട്ട ഉദ്ദരണികളില്‍ Fifty-two semicolon
11:27 Result()എന്ന പേരില്‍ വേറൊരു സബ്റൂട്ടീന്‍ വിളിക്കുക
11:31 $age ന്റെയും $ageword ന്റെയും വിലകള്‍ ഫങ്ക്ഷനകത്ത് പ്രിന്റ് ചെയ്യുക
11:37 സബ്‌റൂട്ടീന്‍ അവസാനിപ്പിക്കുക
11:39 Result()'എന്ന സബ്റൂട്ടീന്‍ പ്രഖ്യാപിക്കുക
11:42 $age ന്റെയും $ageword ന്റെയും വിലകള്‍ വീണ്ടും പ്രിന്റ് ചെയ്യുക
11:47 സബ്‌റൂട്ടീന്‍ അവസാനിപ്പിക്കുക
11:49 First() എന്ന ഫങ്ക്ഷന്‍ വിളിക്കുക
11:51 Package First, Package Second എന്നിവ താഴെ കാണുന്ന രീതിയില്‍ പ്രിന്റ് ചെയ്യുക
11:57 താഴെ കാണുന്ന ലിങ്കിലുള്ള വീഡിയോ ഈ Spoken Tutorial പ്രൊജെക്റ്റ് വിശദീകരിക്കുന്നു. നിങ്ങള്‍ക്കത് ഡൌണ്‍ലോഡ് ചെയ്ത് കാണാവുന്നതാണ്
12:05 ഈ സ്പോക്കണ്‍ ട്യൂട്ടോറിയല്‍ പ്രോജെക്റ്റ് ടീം സ്പോക്കണ്‍ ട്യൂട്ടോറിയല്‍ ഉപയോഗിച്ച് ശില്പശാലകള്‍ നടത്തുന്നു, ഓണ്‍ലൈന്‍ പരീക്ഷ പാസ്സാകുന്നവര്‍ക്ക് സര്‍ട്ടിഫിക്കേറ്റും നല്‍കുന്നുണ്ട്. കൂടുതല്‍ വിവരങ്ങള്‍ക്ക് ഞങ്ങള്‍ക്ക് എഴുതുക
12:18 ഇത് ഇന്ത്യാ ഗവണ്‍മെന്റിന്റെ മാനവശേഷിവിഭവ വകുപ്പിന്റെ നാഷണല്‍ മിഷന്‍ ഓണ്‍ എജ്യുക്കേഷന്‍ ത്രൂ ഐ സി ടി സംരഭത്തിന്റെ പിന്തുണയോടെയാണു്‌ നടത്തുന്നതു്‌. ഈ സംരഭത്തെക്കുറിച്ചുള്ള കൂടുതല്‍ വിവരങ്ങള്‍ ഈ ലിങ്കില്‍ ലഭ്യമാണു്‌
12:31 ഇതില്‍ പങ്കെടുത്ത എല്ലാവര്‍ക്കും നന്ദി പറഞ്ഞുകൊണ്ട് ഞാന്‍ പ്രജൂന വത്സലൻ വിടവാങ്ങുന്നു.

Contributors and Content Editors

Sunilk