Larry Wall ਦੀ “ਡਕਟ ਟੇਪ” ਦ੍ਰਿਸ਼ਟੀ ਨੇ Perl ਨੂੰ ਵੈੱਬ-ਆਟੋਮੇਸ਼ਨ ਦਾ ਕਾਰਗੁਜ਼ਾਰ ਬਣਾਇਆ—ਅਤੇ ਅੱਜ ਵੀ ਪ੍ਰੈਕਟਿਕਲ ਟੈਕਸਟ ਪ੍ਰੋਸੈਸਿੰਗ ਲਈ ਕਿਹੜੀਆਂ ਸਿਖਲਾਈਆਂ ਲਾਗੂ ਹੁੰਦੀਆਂ ਹਨ।

“ਡਕਟ ਟੇਪ ਪ੍ਰੋਗਰਾਮਿੰਗ” ਇਹ ਵਿਚਾਰ ਹੈ ਕਿ ਸਭ ਤੋਂ ਵਧੀਆ ਟੂਲ ਉਹ ਹੁੰਦਾ ਹੈ ਜੋ ਅਕਸਰ ਤੁਹਾਡੇ ਅਸਲ ਸਮੱਸਿਆ ਨੂੰ ਤੇਜ਼ੀ ਨਾਲ حل ਕਰ ਦੇਵੇ—ਚਾਹੇ ਹੱਲ ਸੋਹਣਾ ਨਾ ਹੋਵੇ, ਹੁਨਰਮੰਦ ਨਾ ਹੋਵੇ, ਜਾਂ ਕਿਸੇ ਵੱਡੀ ਪ੍ਰਣਾਲੀ ਵਾਂਗ ਨਹੀਂ ਬਣਾਇਆ ਗਿਆ ਹੋਵੇ।
ਇਹ ਗندਲਾ ਕੰਮ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇਣ ਬਾਰੇ ਨਹੀਂ ਹੈ। ਇਹ ਅਸਲੀਅਤ ਵਿੱਚ ਤਾਰਕਿਕਤਾ ਨੂੰ ਮਹੱਤਵ ਦੇਣ ਬਾਰੇ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਗੰਦੇ ਇਨਪੁਟ, ਅਧੂਰੇ ਸਪੈੱਕ ਅਤੇ ਇੱਕ ਡੈਡਲਾਈਨ ਦਾ ਸਾਹਮਣਾ ਕਰ ਰਹੇ ਹੋ ਜੋ ਤੁਹਾਡੇ ਆਰਕੀਟੈਕਚਰ ਡਾਇਗ੍ਰਾਮ ਦੀ ਖੂਬਸੂਰਤੀ ਨੂੰ ਨਹੀਂ ਦੇਖਦਾ।
ਡਕਟ ਟੇਪ ਮਨਸਕਤਾ ਇੱਕ ਆਸਾਨ ਸਵਾਲ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ: ਉਹ ਸਭ ਤੋਂ ਛੋਟਾ ਬਦਲਾਅ ਕਿਹੜਾ ਹੈ ਜੋ ਦਰਦ ਦੂਰ ਕਰ ਦੇਵੇ? ਇਹ 10,000 ਫਾਇਲਾਂ ਦਾ ਨਾਮ ਬਦਲਣ ਲਈ ਇੱਕ ਛੋਟੀ ਸਕ੍ਰਿਪਟ ਹੋ ਸਕਦੀ ਹੈ, ਲਾਗੋਂ ਤੋਂ ਏਰਰ ਲਾਈਨਾਂ ਨਿਕਾਲਣ ਲਈ ਇਕ ਛੋਟਾ ਫਿਲਟਰ, ਜਾਂ ਇੱਕ ਵਾਰੀ ਲਈ ਐਸੀ ਟਰਾਂਸਫਾਰਮੇਸ਼ਨ ਜੋ ਇਕ ਗੰਦਾ ਐਕਸਪੋਰਟ ਨੂੰ ਸਪਰੇਡਸ਼ੀਟ ਪੜ੍ਹ ਸਕਣ ਯੋਗ ਬਣਾ ਦੇਵੇ।
ਇਹ ਲੇਖ Larry Wall ਅਤੇ Perl ਨੂੰ ਉਸ ਰਵੱਈਏ ਦੀ ਇੱਕ ਇਤਿਹਾਸਕ ਕਹਾਣੀ ਵਜੋਂ ਵਰਤਦਾ ਹੈ—ਪਰ ਮਕਸਦ نوਸਟੈਲਜੀਆ ਨਹੀਂ ਹੈ। ਮਕਸਦ ਉਹ ਪ੍ਰਯੋਗਕ ਸਾਹਮਤ ਸਿਖਲਾਈਆਂ ਕੱਢਣਾ ਹੈ ਜੋ ਅਜੇ ਵੀ ਲਾਗੂ ਹੁੰਦੀਆਂ ਹਨ ਜਦੋਂ ਤੁਸੀਂ ਟੈਕਸਟ, ਲਾਗ, CSV, HTML ਟੁਕੜੇ, ਜਾਂ ਉਹ “ਡੇਟਾ” ਸਮਭਾਲ ਰਹੇ ਹੋ ਜੋ ਅਸਲ ਵਿੱਚ ਅਸਮਰਥਤਰ ਸਤਰਾਂ ਦਾ ਢੇਰ ਹੈ।
ਜੇ ਤੁਸੀਂ ਪੇਸ਼ੇਵਰ ਪ੍ਰੋਗਰਾਮਰ ਨਹੀਂ ਹੋ ਪਰ ਆਮ ਤੌਰ 'ਤੇ ਇਨ੍ਹਾਂ ਨਾਲ ਮੂੰਹ ਦੇ ਰਹੇ ਹੋ:
…ਤਾਂ ਤੁਸੀਂ ਠੀਕ ਲਕੜੀ ਹੋ।
ਅੰਤ ਤੱਕ, ਤੁਹਾਡੇ ਕੋਲ ਚਾਰ ਸਪਸ਼ਟ ਲੈਸਨ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ:
Larry Wall ਕਿਸੇ “ਚਲਾਕ” ਭਾਸ਼ਾ ਨੂੰ ਬਣਾਉਣ ਲਈ ਨਹੀਂ ਬੈਠਿਆ ਸੀ। ਉਹ ਇੱਕ ਕਾਰਜਕਾਰੀ ਇੰਜੀਨੀਅਰ ਅਤੇ ਸਿਸਟਮ ਐਡਮਿਨ ਸੀ ਜੋ ਆਪਣੇ ਦਿਨ ਗੰਦੇ ਟੈਕਸਟ ਨੂੰ ਸੰਭਾਲ ਕੇ ਬਿਤਾਉਂਦਾ ਸੀ: ਲਾਗ ਫਾਇਲਾਂ, ਰਿਪੋਰਟਾਂ, ਕੰਫਿਗਰੇਸ਼ਨ ਟੁਕੜੇ, ਮੇਲ ਹੈਡਰ ਅਤੇ ਆਡ-ਹੌਕ ਡੇਟਾ ਡੰਪ ਜੋ ਕਦੇ ਵੀ ਮੈਨੁਅਲ ਵਿੱਚ ਦਿੱਤੇ ਫਾਰਮੈਟ ਦੇ ਨਾਲ ਬੈਠਦੇ ਨਹੀਂ।
1980 ਦੇ ਦਹਾਕੇ ਦੇ ਮੱਧ ਤੱਕ, Unix ਕੋਲ ਪਹਿਲਾਂ ਹੀ ਸ਼ਾਨਦਾਰ ਟੂਲ ਸਨ—sh, grep, sed, awk, ਪਾਈਪ ਅਤੇ ਫਿਲਟਰ। ਪਰ ਅਸਲੀ ਕੰਮ ਸ਼ਾਇਦ ਇੱਕ ਸਾਫ਼-ਸੁਥਰੇ ਕਮਾਂਡ ਵਿੱਚ ਫਿੱਟ ਨਹੀਂ ਹੁੰਦੇ। ਤੁਸੀਂ ਇੱਕ ਪਾਈਪਲਾਈਨ ਨਾਲ ਸ਼ੁਰੂ ਕਰਦੇ, ਫਿਰ ਪataੋ ਕਰਦੇ ਕਿ ਤੁਹਾਨੂੰ ਇੱਕ ਛੋਟੀ ਸਟੇਟ ਮਸ਼ੀਨ, ਬਿਹਤਰ ਸਟਰਿੰਗ ਹੈਂਡਲਿੰਗ, ਇੱਕ ਦੁਬਾਰਾ ਵਰਤੇ ਜਾਣ ਵਾਲੀ ਸਕ੍ਰਿਪਟ ਅਤੇ ਇਹ ਰੱਖਣ ਦਾ ਤਰੀਕਾ ਲੋੜੀਂਦਾ ਹੈ, ਤਾਂ ਕਿ ਤੁਸੀਂ ਅਗਲੇ ਹਫ਼ਤੇ ਵੀ ਇਸਨੂੰ ਠੀਕ ਕਰ ਸਕੋ।
Larry ਦੀ ਪ੍ਰੇਰਣਾ ਪ੍ਰਯੋਗਿਕ ਸੀ: “ਗਲੂ ਵਰਕ” ਦਾ ਘਰਾਣਾ ਘਟਾਉਣਾ—ਉਹ ਨਿਰਮਲ ਪਰੰਪਰਾਵਾਂ ਵਾਲਾ ਕੰਮ ਜੋ ਟੂਲਾਂ ਨੂੰ ਜੋੜਨ ਅਤੇ ਟੈਕਸਟ ਨੂੰ ਤਬਦੀਲ ਕਰਨ ਦਾ ਨਿਰੰਤਰ ਕੰਮ ਹੈ, ਤਾਂ ਜੋ ਕੁਝ ਵਰਤਣਯੋਗ ਨਿਕਲੇ।
Perl ਦਾ ਮੁਖ ਉਦੇਸ਼ Unix ਟੂਲਾਂ ਨੂੰ ਬਦਲਣਾ ਨਹੀਂ ਸੀ—ਇਹ ਉਹਨਾਂ ਨੂੰ ਸੰਸ୍ਥਾ ਵਿੱਚ ਆਸਾਨ ਬਣਾਉਣ ਲਈ ਸੀ ਜਦ ਇੱਕ ਵਨ-ਲਾਈਨਰ ਪਾਈਪਲਾਈਨ ਇਕ ਛੋਟੀ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ变ਯਾ। ਵੱਖ-ਵੱਖ ਯੁਟਿਲਿਟੀਆਂ (ਹਰ ਇੱਕ ਦੇ ਆਪਣੇ quoting ਨਿਯਮ ਅਤੇ ਏਜ ਕੇਸ) ਚਲਨ ਦੀ ਭਜਾਏ, Perl ਇੱਕ ਸਥਾਨ ਪਰਦਾਨ ਕਰਦਾ ਸੀ:
ਇਹੀ “ਡਕਟ ਟੇਪ” ਮਨਸਕਤਾ ਹੈ: ਪਰਫੈਕਸ਼ਨ ਨਹੀਂ, ਪਰ ਇੱਕ ਤੇਜ਼, ਟਿਕਾਊ ਫਿਕਸ ਜੋ ਚੀਜ਼ਾਂ ਨੂੰ ਇਕੱਠੇ ਰੱਖ ਸਕੇ।
Perl ਦਾ ਸਭਿਆਚਾਰ ਕੁਝ ਮੁੱਲਾਂ ਨੂੰ ਗਲੇ ਲਗਾਉਂਦਾ ਸੀ ਜੋ ਰੋਜ਼ਾਨਾ ਹਕੀਕਤ ਨਾਲ ਮਿਲਦੇ ਸਨ: ਪਿਆਰ-ਅਤੇ-ਸੁਚਤਾ ਉੱਤੇ ਪ੍ਰੈਗਮੈਟਿਕ, ਰਸਮੀਅਤ ਉੱਤੇ ਅਭਿਵਕਤੀਮੁਖ, ਅਤੇ ਮਸ਼ਹੂਰ ਨारा “There’s more than one way to do it.” ਇਹ ਸਿਰਫ ਨਾਰੇ ਨਹੀਂ ਸਨ—ਇਹ ਤੁਹਾਨੂੰ ਉਹ ਸਮੱਸਿਆ ਹੱਲ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੇ ਸਨ ਜੋ ਸਾਹਮਣੇ ਸੀ ਬਿਨਾਂ ਜ਼ਿਆਦਾ ਦਰਦ ਦੇ।
Perl ਦੀ ਸ਼ੁਰੂਆਤੀ ਲੋਕਪ੍ਰਿਯਤਾ ਪਿੱਛੋਂ ਦੇਖਦਿਆਂ ਰਾਜ਼ੀ ਨਹੀਂ ਦਿਖਦੀ। ਇਹ ਨਹੀਂ ਸੀ। ਇਹ ਸਾਡੀਆਂ ਟੀਮਾਂ ਦੀ ਲੋੜਾਂ ਨਾਲ ਮਿਲਦੀ ਸੀ: ਇਕ ਭਾਸ਼ਾ ਜੋ ਗੰਦੇ ਇਨਪੁਟ ਨੂੰ ਸਹਿੰ ਸਕੇ, ਮੌਜੂਦਾ ਸਿਸਟਮਾਂ ਨਾਲ ਇੰਟਿਗਰੇਟ ਕਰ ਸਕੇ, ਅਤੇ ਇੱਕ ਥੱਕੇ ਹੋਏ ਮਨੁੱਖ ਨੂੰ ਈਕ ਸਕ੍ਰਿਪਟ ਭੇਝਣ ਦੀ ਆਗਿਆ ਦੇਵੇ ਤਾਕਿ ਅਗਲੀ ਪੇਜਲੇਟ ਬੇਲ ਨਾ ਵਾਜੇ।
ਪਹਿਲੇ ਵੈੱਬਸਾਈਟਾਂ ਐਪ ਫ੍ਰੇਮਵਰਕਾਂ ਅਤੇ ਮੈਨੇਜਡ ਸਰਵਿਸਾਂ ਨਾਲ ਚਲਦੀਆਂ ਨਹੀਂ ਸਨ। ਬਹੁਤ ਸਾਰੀਆਂ ਇੱਕ ਵੈੱਬ ਸਰਵਰ, CGI ਸਕ੍ਰਿਪਟਾਂ ਦੀ ਇਕ ਡਾਇਰੈਕਟਰੀ, ਕੁਝ ਫਲੇਟ ਫਾਇਲਾਂ ਅਤੇ ਸ਼ਾਇਦ ਇੱਕ ਸਧਾਰਨ ਡੇਟਾਬੇਸ ਜੋ ਹਰ ਚੀਜ਼ ਲਈ “ਕੇਂਦਰੀ” ਨਹੀਂ ਸੀ, ਦੇ ਨਾਲ ਚਲਦੀਆਂ ਸਨ।
ਓਪਰੇਸ਼ਨ ਲਾਗ-ਭਰਪੂਰ ਸਨ: ਐਕਸੈਸ ਲਾਗ, ਐਰਰ ਲਾਗ, ਅਪਲੋਡ ਫੋਲਡਰ, ਫਾਰਮ ਸਬਮਿਸ਼ਨ ਪ੍ਰਾਪਤ ਕਰਨ ਵਾਲੇ ਇਨਬਾਕਸ, ਅਤੇ ਉਹ ਟੈਕਸਟ ਫਾਇਲਾਂ ਜੋ ਚੁੱਪਚਾਪ ਡੇਟਾਬੇਸ ਬਣ ਗਈਆਂ। ਜਦ ਕੁਝ ਟੁੱਟਦਾ, ਤੁਸੀਂ ਅਕਸਰ ਕੱਲ੍ਹ ਦੇ ਲਾਗਾਂ ਵਿੱਚ grep ਕਰਕੇ ਬਿਅਨ ਕਰਦੇ ਅਤੇ ਸਕ੍ਰਿਪਟ ਠੀਕ ਕਰਦੇ।
ਆਟੋਮੇਸ਼ਨ ਸਾਦਾ ਸੀ: ਇੱਕ ਦੁਹਰਾਉਣਯੋਗ ਕੰਮ ਜੋ ਬਿਨਾਂ ਹੱਥੋਂ ਕਰਨ ਦੇ ਆਪ ਚਲ ਜਾਵੇ।
ਇਹ ਕੰਮ ਇੱਕ ਵੈੱਬ ਰਿਕਵੇਸਟ ਨਾਲ ਟ੍ਰਿਗਰ ਹੋ ਸਕਦਾ ਸੀ (ਕਿਸੇ ਨੇ ਫਾਰਮ ਭਰਿਆ, “ਖੋਜ” 'ਤੇ ਕਲਿੱਕ ਕੀਤਾ, ਰਿਪੋਰਟ ਡਾਊਨਲੋਡ ਕੀਤਾ), ਜਾਂ ਇੱਕ ਸੁਚੀਤ ਨੌਕਰੀ ਦੁਆਰਾ (cron ਹਰ ਘੰਟੇ ਲਾਗ ਰੋਟੇਟ ਕਰਨ, ਪੰਨੇ ਮੁੜ ਬਣਾਉਣ, ਸਾਰਾਂਸ਼ ਭੇਜਣ)।
ਛੋਟੀ ਸਾਈਟਾਂ ਨੂੰ ਵੀ ਇਸ ਦੀ ਲੋੜ ਹੁੰਦੀ ਸੀ:
ਇਹ ਹੱਥੋਂ ਕਰਨਾ ਸਮਾਂ ਵਿਰਲ਼ਦਾ ਹੀ ਨਹੀਂ—ਇਹ ਗਲਤੀਆਂ ਅਤੇ ਦੇਰੀ ਵੀ ਲਿਆਉਂਦਾ ਸੀ।
Perl ਉਸ ਸਭ ਵਿਚਕਾਰ ਖੂਬਸੂਰਤੀ ਨਾਲ ਫਿੱਟ ਹੁੰਦਾ ਸੀ:
grep, sed, awk, sort) ਜੋ ਇੱਕ-ਕਦਮ ਲਈ ਵਧੀਆ ਸਨPerl ਇੱਕ ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਰਿਕਵੇਸਟ ਪੜ੍ਹ ਸਕਦਾ ਸੀ, ਸਿਸਟਮ ਕਮਾਂਡ ਚਲਾ ਸਕਦਾ ਸੀ, ਗੰਦੇ ਟੈਕਸਟ ਨੂੰ ਤਬਦੀਲ ਕਰ ਸਕਦਾ ਸੀ, ਅਤੇ HTML ਪਰਿੰਟ ਕਰ ਸਕਦਾ ਸੀ—ਸਭ ਇੱਕੋ ਹੀ ਥਾਂ। ਇਹ “ਗਲੂ ਭਾਸ਼ਾ” ਭੂਮਿਕਾ ਹੀ ਸੀ ਜਿਸ ਨੇ ਸ਼ੁਰੂਆਤੀ ਵੈੱਬ ਆਟੋਮੇਸ਼ਨ ਨੂੰ ਵਾਸਤਵਿਕ ਬਣਾਇਆ: ਇਹ ਉਹਨਾਂ ਹਿੱਸਿਆਂ ਨੂੰ ਜੋੜਦਾ ਸੀ ਜੋ ਵੱਖ-ਵੱਖ ਤੌਰ 'ਤੇ ਲਾਭਦਾਇਕ ਸਨ ਪਰ ਇਕੱਠੇ ਕਰਨਾ ਔਖਾ ਸੀ।
Perl ਨੇ ਆਪਣੀ “ਡਕਟ ਟੇਪ” ਸاکਸ਼ੀਓਂ ਪ੍ਰਾਪਤ ਕੀਤੀ ਕਿਉਂਕਿ ਇਹ ਪਰੰਪਰਾ ਦੀ Unix ਕਮਾਂਡ-ਲਾਈਨ ਟੂਲਾਂ ਅਤੇ ਨਵੇਂ ਵੈੱਬ ਸਕ੍ਰਿਪਟਿੰਗ ਦੀ ਦੁਨੀਆ ਦੇ ਵਿਚਕਾਰ ਆਸਾਨੀ ਨਾਲ ਬੈਠ ਸਕਦਾ ਸੀ। ਜੇ ਤੁਹਾਡਾ ਡੇਟਾ ਲਾਗ ਫਾਇਲਾਂ, ਈਮੇਲ, CSV ਐਕਸਪੋਰਟ, ਜਾਂ HTML ਟੁਕੜਿਆਂ ਵਾਂਗ ਸ਼ੁਰੂ ਹੁੰਦਾ, Perl ਉਸਨੂੰ ਫੜ ਸਕਦਾ ਸੀ, ਫਰਮਾਏ, ਅਤੇ ਅੱਗੇ ਦੇ ਲਈ ਹਥਿਆਰ ਦੇ ਸਕਦਾ ਸੀ—ਬਿਨਾਂ ਤੁਹਾਨੂੰ ਪੂਰੀ ਨਵੀਂ ਵਾਤਾਵਰਣ ਨੂੰ ਅਪਣਾਉਣ ਲਈ ਮਜ਼ਬੂਰ ਕਰਨ ਦੇ।
ਡਿਫੋਲਟ ਤੌਰ 'ਤੇ, Perl ਨੇ ਟੈਕਸਟ ਮੈਨਿਪुलेਸ਼ਨ ਨੂੰ ਅਸਾਨ ਮਹਿਸੂਸ ਕਰਵਾਇਆ:
split, join, replace) ਜੋ ਹਕੀਕਤੀ ਸਾਫ਼-ਸਫਾਈ ਕਾਰਜਾਂ ਨਾਲ ਮਿਲਦੇ ਹਨਇਸ ਜੋੜ ਨੇ ਮਤਲਬ ਦਿਤਾ ਕਿ ਰੋਜ਼ਾਨਾ ਪਾਰਸਿੰਗ ਅਤੇ ਐਡੀਟਿੰਗ ਲਈ ਤੁਹਾਨੂੰ ਲੰਬੀ ਟੂਲਚੇਨ ਦੀ ਲੋੜ ਨਹੀਂ ਸੀ।
Unix ਛੋਟੇ, ਧਿਆਨ-ਕੇਂਦਰਤ ਪ੍ਰੋਗਰਾਮਾਂ ਨੂੰ ਪ੍ਰੋਤਸਾਹਿਤ ਕਰਦਾ ਹੈ ਜੋ ਇਕੱਠੇ ਜੁੜਦੇ ਹਨ। Perl ਉਹਨਾਂ ਟੁਕੜਿਆਂ ਵਿੱਚੋਂ ਇੱਕ ਹੋ ਸਕਦਾ ਸੀ: ਸਟੈਂਡਰਡ ਇਨਪੁੱਟ ਤੋਂ ਪੜ੍ਹੋ, ਟੈਕਸਟ ਤਬਦੀਲ ਕਰੋ, ਅਤੇ ਅਗਲੇ ਟੂਲ ਲਈ ਨਤੀਜਾ ਪ੍ਰਿੰਟ ਕਰੋ।
ਆਮ ਮਾਨਸਿਕ ਮਾਡਲ ਸੀ:
read → transform → write
ਉਦਾਹਰਣ ਵਜੋਂ: ਸਰਵਰ ਲਾਗ ਪੜ੍ਹੋ, ਤਾਰੀਖ ਫਾਰਮੈਟ ਸਧਾਰੋ, ਸ਼ੋਰ ਹਟਾਓ, ਫਿਰ ਇੱਕ ਸਾਫ਼ ਕੀਤੀ ਫਾਇਲ ਲਿਖੋ—ਸਭ ਤੋਂ ਪਹਿਲਾਂ ਜਾਂ ਬਾਅਦ ਵਿੱਚ sort, uniq, ਜਾਂ grep ਵਿਚ ਪਾਈਪ ਕਰਕੇ। Perl Unix ਟੂਲਾਂ ਨੂੰ ਨਹੀਂ ਬਦਲਦਾ ਸੀ; ਜਦ awk + sed + shell ਸੰਯੋਗ ਅਧਿਕ ਜਟਿਲ ਹੋ ਜਾਂਦਾ, ਤਾਂ ਇਹਨਾਂ ਨੂੰ ਜੋੜਦਾ ਸੀ।
ਉਹੀ ਸਕ੍ਰਿਪਟ-ਫਰਸਟ ਰਵੱਈਆ ਸ਼ੁਰੂਆਤੀ ਵੈੱਬ ਵਿਕਾਸ ਵਿੱਚ ਵੀ ਲਗੂ ਹੋਇਆ। ਇੱਕ Perl ਸਕ੍ਰਿਪਟ ਫਾਰਮ ਇਨਪੁਟ ਸਵੀਕਾਰ ਕਰ ਸਕਦੀ ਸੀ, ਕਿਸੇ ਹੋਰ ਟੈਕਸਟ ਸਟ੍ਰੀਮ ਵਾਂਗ ਪ੍ਰੋਸੈਸ ਕਰ ਸਕਦੀ ਸੀ, ਅਤੇ HTML ਨੂੰ ਆਊਟਪੁੱਟ ਵਜੋਂ ਪ੍ਰਿੰਟ ਕਰ ਸਕਦੀ ਸੀ—ਇਸ ਲਈ ਇਹ ਸਿਸਟਮ ਯੂਟਿਲਿਟੀਜ਼ ਅਤੇ ਵੈੱਬ ਪੰਨਿਆਂ ਵਿਚਕਾਰ ਇੱਕ ਪ੍ਰਯੋਗਕ ਪੁਲ ਸੀ।
Perl ਕਈ Unix-ਜਿਹੇ ਸਿਸਟਮਾਂ 'ਤੇ ਚਲਦਾ ਸੀ, ਇਸ ਕਰਕੇ ਟੀਮਾ ਅਕਸਰ ਉਸੇ ਸਕ੍ਰਿਪਟ ਨੂੰ ਮਸ਼ੀਨਾਂ ਵਿੱਚ ਘੱਟ ਤਬਦੀਲੀਆਂ ਨਾਲ ਮੂਵ ਕਰ ਸਕਦੇ ਸਨ—ਮੁੱਲਵਰ ਹੁੰਦਾ ਜਦ ਡਿਪਲੋਇਮੈਂਟ ਸਧਾਰਣ, ਮੈਨੂਅਲ ਅਤੇ ਘੱਟ-ਆਵਿਰਤ ਹੋ।
Regular expressions (ਆਮ ਤੌਰ 'ਤੇ “regex” ਕਿਹਾ ਜਾਂਦਾ) ਟੈਕਸਟ ਪੈਟਰਨਾਂ ਵਰਣਨ ਕਰਨ ਦਾ ਤਰੀਕਾ ਹੈ—ਜਿਵੇਂ ਇੱਕ “ਖੋਜ ਅਤੇ ਬਦਲੋ” ਟੂਲ, ਪਰ ਨਿਯਮਾਂ ਨਾਲ ਬਦਲੇ ਸ਼ਬਦਾਂ ਦੀ ਥਾਂ। [email protected] ਵਰਗੇ ਲਿਟਰਲ ਸਤਰ ਦੀ ਖੋਜ ਕਰਨ ਦੀ ਥਾਂ, regex ਤੁਹਾਨੂੰ ਕਹਿ ਸਕਦਾ ਹੈ “ਕੁਝ ਵੀ ਜੋ ਈਮੇਲ ਵਰਗਾ ਲੱਗਦਾ ਹੈ, ਲੱਭੋ।” ਇਹ ਇਕਲੌਤਾ ਬਦਲਾਅ—ਠੀਕ ਮੇਲ ਤੋਂ ਪੈਟਰਨ ਮੇਚ ਵੱਲ—ਉਹ ਹੈ ਜਿਸ ਨੇ ਪਹਿਲੀ ਆਟੋਮੇਸ਼ਨ ਦਾ ਬਹੁਤ ਸਾਰਾ ਕੰਮ ਸੰਭਵ ਕੀਤਾ।
regex ਨੂੰ ਇੱਕ ਛੋਟੀ-ਭਾਸ਼ਾ ਸਮਝੋ ਜੋ ਸਵਾਲਾਂ ਦੇ ਜਵਾਬ ਦਿੰਦੀ ਹੈ ਜਿਵੇਂ:
ਜੇ ਤੁਸੀਂ ਕਦੇ ਟੈਕਸਟ ਨੂੰ ਸਪਰੇਡਸ਼ੀਟ ਵਿੱਚ ਪੇਸਟ ਕੀਤਾ ਤੇ ਚਾਹਿਆ ਕਿ ਇਹ ਆਪਣੇ-ਆਪ ਨੂੰ ਕਾਲਮਾਂ ਵਿੱਚ ਵੰਡ ਦੇਵੇ, ਤਾਂ ਤੁਸੀਂ regex ਚਾਹੁੰਦੇ ਸੀ।
ਸ਼ੁਰੂਆਤੀ ਵੈੱਬ ਸਕ੍ਰਿਪਟ ਗੰਦੇ ਇਨਪੁਟ ਤੇ ਜੀਵਨ ਯਾਪਨ ਕਰਦੇ ਸਨ: ਮਨੁੱਖਾਂ ਦੁਆਰਾ ਭਰੇ ਫਾਰਮ ਫੀਲਡ, ਸਰਵਰਾਂ ਵੱਲੋਂ ਬਣਾਏ ਲਾਗ, ਅਤੇ ਵੱਖ-ਵੱਖ ਸਿਸਟਮਾਂ ਤੋਂ ਜੁੜੀਆਂ ਫਾਇਲਾਂ। Regex ਨੇ ਤਿੰਨ ਉੱਚ-ਮੁੱਲ ਵਾਲੇ ਕੰਮ ਤੇਜ਼ੀ ਨਾਲ ਕਰਨ ਯੋਗ ਬਣਾਏ:
ਇਨਪੁਟ ਵੈਧੀਕਰਨ (ਜਿਵੇਂ, “ਇਹ ਇੱਕ URL ਵਾਂਗ ਲੱਗਦਾ ਹੈ,” “ਇਹ ਇੱਕ ਤਾਰੀਖ ਵਾਂਗ ਲੱਗਦੀ ਹੈ”)।
ਫੀਲਡ ਕੱਢਣਾ (ਜਿਵੇਂ, ਲਾਗ ਲਾਈਨ ਵਿੱਚੋਂ ਸਟੇਟਸ ਕੋਡ ਅਤੇ ਰਿਕਵੇਸਟ ਪਾਥ ਖਿੱਚਣਾ)।
ਸਮੱਗਰੀ ਨੂੰ ਦੁਬਾਰਾ ਲਿਖਣਾ (ਜਿਵੇਂ, ਫੋਨ ਨੰਬਰ ਸਧਾਰਨ ਕਰਨਾ, ਪੁਰਾਣੇ ਲਿੰਕਾਂ ਨੂੰ ਬਦਲਣਾ, ਸੇਵ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਯੂਜ਼ਰ ਇਨਪੁਟ ਸੈਨਿਟਾਈਜ਼ ਕਰਨਾ)।
Perl ਦੀ regex ਸਹਾਇਤਾ ਸਿਰਫ ਹੋਣ ਲਈ ਨਹੀਂ ਸੀ—ਇਹ ਇਸ ਤਰ੍ਹਾਂ ਡਿਜ਼ਾਈਨ ਕੀਤੀ ਗਈ ਸੀ ਕਿ ਇਸਦਾ ਅਕਸਰ ਉਪਯੋਗ ਕੀਤਾ ਜਾਵੇ। ਇਹ “ਡਕਟ ਟੇਪ” ਮਨਸਕਤਾ ਨਾਲ ਪੂਰੀ ਤਰ੍ਹਾਂ ਮਿਲਦੀ ਸੀ: ਅਸਮਰਥ ਟੈਕਸਟ ਲਓ, ਕੁਝ ਨਿਸ਼ਚਿਤ ਨਿਯਮ ਲਗਾਓ, ਅਤੇ ਕੁਝ ਭਰੋਸੇਯੋਗ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕਰੋ।
Regex ਉਨ੍ਹਾਂ “ਲਗਭਗ ਸੰਰਚਿਤ” ਟੈਕਸਟਾਂ 'ਤੇ ਚਮਕਦਾ ਜੋ ਲੋਕ ਹਰ ਰੋਜ਼ ਵਰਤਦੇ ਹਨ:
12/26/25 ਨੂੰ 2025-12-26 ਵਿੱਚ ਬਦਲਣਾ, ਜਾਂ ਵੱਖ-ਵੱਖ ਤਾਰੀਖ ਸਟਾਇਲਾਂ ਨੂੰ ਪਛਾਣਨਾ।Regex ਇਸ ਕਾਬਲ ਹੈ ਕਿ ਇਹ ਗੁਪਤ ਹੋ ਸਕਦਾ ਹੈ। ਇੱਕ ਛੋਟਾ, ਚਤੁਰ ਪੈਟਰਨ ਸਮੀਖਿਆ ਲਈ ਔਖਾ ਹੋ ਸਕਦਾ ਹੈ, ਡੀਬੱਗ ਕਰਨਾ ਮੁਸ਼ਕਲ ਹੋ ਸਕਦਾ ਹੈ, ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਜਦ ਇਨਪੁਟ ਫਾਰਮੈਟ ਬਦਲੇ ਤਾਂ ਬਹੁਤ ਆਸਾਨੀ ਨਾਲ ਟੁੱਟ ਸਕਦਾ ਹੈ।
ਇੱਕ ਰੱਖ-ਰਖਾਵ ਯੋਗ ਤਰੀਕਾ ਹੈ ਪੈਟਰਨਾਂ ਨੂੰ ਛੋਟਾ ਰੱਖਣਾ, ਟਿੱਪਣੀਆਂ ਜੋੜਣਾ (ਜਿੱਥੇ ਭਾਸ਼ਾ ਇਹ ਸਮਰਥਨ ਕਰਦੀ ਹੈ), ਅਤੇ ਇਕ “ਜੀਨੀਅਸ” ਇਕਸਪ੍ਰੈਸ਼ਨ ਦੀ ਥਾਂ ਦੋ ਸਾਫ਼ ਕਦਮਾਂ ਨੂੰ ਪਸੰਦ ਕਰਨਾ ਜਦ ਕਿਸੇ ਹੋਰ ਨੂੰ ਅਗਲੇ ਮਹੀਨੇ ਵਿੱਚ ਇਸਨੂੰ ਛੂਹਣਾ ਪਏ।
Perl one-liners ਨੂੰ ਸਭ ਤੋਂ ਵਧੀਆ ਤੌਰ 'ਤੇ ਸੋਚੋ ਜਿਵੇਂ ਨਾਨ੍ਹੇ ਸਕ੍ਰਿਪਟ: ਛੋਟੇ, ਇਕ-ਉਦੇਸ਼ ਕਮਾਂਡ ਜੋ ਤੁਸੀਂ ਸਿੱਧੇ ਆਪਣੇ ਟਰਮੀਨਲ ਵਿੱਚ ਚਲਾ ਸਕਦੇ ਹੋ ਟੈਕਸਟ ਤਬਦੀਲ ਕਰਨ ਲਈ। ਜਦ ਤੁਹਾਨੂੰ ਇੱਕ ਤੇਜ਼ ਕਲੀਨਅੱਪ, ਇੱਕ ਵਾਰੀ-ਵਰਤੀ ਮਾਈਗ੍ਰੇਸ਼ਨ, ਜਾਂ ਇੱਕ ਤੇਜ਼ ਜਾਂਚ ਦੀ ਲੋੜ ਹੋਵੇ ਤਾਂ ਉਹ ਚਮਕਦੇ ਹਨ।
ਇੱਕ one-liner ਆਮ ਤੌਰ 'ਤੇ ਸਟੈਂਡਰਡ ਇਨਪੁੱਟ ਤੋਂ ਪੜ੍ਹਦਾ, ਇਕ ਬਦਲਾਅ ਕਰਦਾ, ਅਤੇ ਨਤੀਜਾ ਪ੍ਰਿੰਟ ਕਰਦਾ ਹੈ। ਉਦਾਹਰਣ ਵਜੋਂ, ਫਾਇਲ ਤੋਂ ਖ਼ਾਲੀ ਲਾਈਨਾਂ ਹਟਾਉਣਾ:
perl -ne 'print if /\\S/' input.txt \u003e output.txt
ਜਾਂ ਖਾਲੀ-ਵਿਚਕਾਰ ਖੇਤਰਾਂ ਵਾਲੇ ਸਪੇਸ-ਸਪਲਿਟ ਕੀਤੇ ਟੈਕਸਟ ਵਿੱਚੋਂ ਖਾਸ “ਕਾਲਮ” ਨਿਕਾਲਣਾ:
perl -lane 'print \"$F[0]\\t$F[2]\"' data.txt
ਅਤੇ ਬੈਚ ਨਾਂ-ਬਦਲਣ ਲਈ, Perl ਤੁਹਾਡੇ ਫਾਇਲ ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਥੋੜੀ ਹੋਰ ਕੰਟਰੋਲ ਦੇ ਸਕਦਾ ਹੈ ਬੁਨਿਆਦੀ ਰੀਨੇਮ ਟੂਲ ਨਾਲੋਂ:
perl -e 'for (@ARGV){(my $n=$_)=~s/\\s+/_/g; rename $_,$n}' *
(ਉੱਪਰਲਾ ਉਦਾਹਰਣ ਖਾਲੀ ਥਾਵਾਂ ਨੂੰ ਅੰਡਰਸਕੋਰ ਨਾਲ ਬਦਲਦਾ ਹੈ.)
One-liners ਉਚਿਤ ਹਨ ਜਦ:
ਅਸਲੀ ਸਕ੍ਰਿਪਟ ਲਿਖੋ ਜਦ:
“ਤੇਜ਼” ਦਾ ਮਤਲਬ “ਅਣਟਰੇਸਏਬਲ” ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ। ਆਪਣੀ ਸ਼ੈੱਲ ਹਿਸਟਰੀ ਲਾਈਨ ਸੇਵ ਕਰੋ (ਜਾਂ ਰਿਪੋ ਵਿੱਚ ਨੋਟ ਵਿੱਚ ਪੇਸਟ ਕਰੋ), ਇੱਕ ਪਹਿਲਾਂ/ਬਾਅਦ ਉਦਾਹਰਣ ਸ਼ਾਮਿਲ ਕਰੋ, ਅਤੇ ਜੋ ਬਦਲਿਆ ਗਿਆ ਉਹ ਦਰਜ ਕਰੋ।
ਜੇ ਤੁਸੀਂ ਇੱਕੋ-ਉਹੀ one-liner ਦੋ ਵਾਰੀ ਚਲਾਉਂਦੇ ਹੋ, ਤਾਂ ਇਹ ਤੁਹਾਡਾ ਸੰਕੇਤ ਹੈ ਕਿ ਇਸਨੂੰ ਇੱਕ ਛੋਟੀ ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਬਦਲ ਦੇਓ ਜਿਸ ਵਿੱਚ ਫਾਇਲ ਦਾ ਨਾਮ, ਟਿੱਪਣੀਆਂ, ਅਤੇ ਇੱਕ ਭਰੋਸੇਯੋਗ ਇਨਪੁੱਟ/ਆਉਟਪੁੱਟ ਮਾਰਗ ਹੋਵੇ।
CPAN (Comprehensive Perl Archive Network) ਸਧਾਰਨ ਸ਼ਬਦਾਂ ਵਿੱਚ Perl ਲਈ ਇਕ ਸਾਂਝਾ ਲਾਇਬ੍ਰੇਰੀ ਰੇਕ ਹੈ: ਇੱਕ ਪਬਲਿਕ ਕਲੈਕਸ਼ਨ ਰਿਉਜ਼ੇਬਲ ਮੌਡੀਊਲਾਂ ਦੀ ਜੋ ਕੋਈ ਵੀ ਡਾਉਨਲੋਡ ਕਰ ਸਕਦਾ ਹੈ ਅਤੇ ਵਰਤ ਸਕਦਾ ਹੈ。
ਹਰ ਚੀਜ਼ ਨੂੰ ਸ਼ੁਰੂ ਤੋਂ ਬਣਾਉਣ ਦੀ ਬਜਾਏ, ਛੋਟੀਆਂ ਟੀਮਾਂ ਇੱਕ ਚੰਗੇ-ਟੈਸਟ ਕੀਤੇ ਮੌਡੀਊਲ ਨੂੰ ਲੈ ਸਕਦੀਆਂ ਸਨ ਅਤੇ ਆਪਣੇ ਅਸਲ ਸਮੱਸਿਆ 'ਤੇ ਧਿਆਨ ਕਰ ਸਕਦੀਆਂ ਸਨ—ਅੱਜ ਇੱਕ ਲੱਛਣ ਭੇਜਨਾ।
ਬਹੁਤ ਸਾਰੇ ਰੋਜ਼ਮਰਾ ਵੈੱਬ ਕੰਮ ਇੱਕ-ਇਕ ਵਿਕਾਸਕਾਰ ਲਈ ਅਚਾਨਕ ਅਗਿਆਨ ਹੋ ਗਏ ਕਿਉਂਕਿ CPAN ਨੇ ਉਹ ਬਲਾਕ ਦਿੱਤੇ ਜੋ ਨਾ ਬਣਾਉਣ 'ਤੇ ਦਿਨਾਂ ਜਾਂ ਹਫ਼ਤਿਆਂ ਲੈਂਦੇ। ਆਮ ਉਦਾਹਰਣਾਂ ਵਿੱਚ ਸ਼ਾਮਿਲ ਹਨ:
ਇਹ ਮੈਟਰ ਕਰਦਾ ਸੀ ਕਿਉਂਕਿ ਸ਼ੁਰੂਆਤੀ ਵੈੱਬ ਆਟੋਮੇਸ਼ਨ ਅਕਸਰ "ਹੋਰ ਇੱਕ ਸਕ੍ਰਿਪਟ" ਹੁੰਦੀ ਸੀ ਜੋ ਪਹਿਲਾਂ ਹੀ ਵਿਅਸਤ ਸਿਸਟਮ ਵਿੱਚ ਜੋੜੀ ਜਾਂਦੀ। CPAN ਨੇ ਉਸ ਸਕ੍ਰਿਪਟ ਨੂੰ ਤੇਜ਼ੀ ਨਾਲ ਜੋੜਣਾ—ਅਤੇ ਅਕਸਰ ਜ਼ਿਆਦਾ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ—ਸੰਭਵ ਬਣਾਇਆ ਕਿਉਂਕਿ ਇਹ ਉਸ ਕੋਡ 'ਤੇ ਨਿਰਭਰ ਹੋ ਸਕਦਾ ਸੀ ਜੋ ਪਹਿਲਾਂ ਹੀ ਵਰਤਿਆ ਗਿਆ ਸੀ।
ਟ੍ਰੇਡਆਫ਼ ਸੱਚਿਆ ਹੈ: ਡਿਪੇਂਡੈਂਸੀ ਇੱਕ ਪ੍ਰਤੀਬੱਧਤਾ ਹੈ।
ਮੌਡੀਊਲਾਂ ਨੂੰ ਖਿੱਚਣਾ ਤੁਰੰਤ ਸਮਾਂ ਬਚਾ ਸਕਦਾ ਹੈ, ਪਰ ਇਸਦਾ ਮਤਲਬ ਹੈ ਤੁਸੀਂ ਵਰਜਨ ਕੰਪੈਟਿਬਿਲਿਟੀ, ਸੁਰੱਖਿਆ ਫਿਕਸ ਅਤੇ ਇੱਕ ਮੌਡੀਊਲ ਦੇ ਬੇ-ਮੰਤਰਨ ਹੋ ਜਾਣ 'ਤੇ ਕੀ ਹੁੰਦਾ ਹੈ, ਬਾਰੇ ਸੋਚਣਾ ਪਵੇਗਾ। ਇੱਕ ਤੇਜ਼ ਜਿੱਤ ਅੱਜ ਕੱਲ੍ਹ ਇੱਕ ਪਰੇਸ਼ਾਨੀ ਭਰਪੂਰ ਅਪਗਰੇਡ ਕੱਲ੍ਹ ਹੋ ਸਕਦੀ ਹੈ।
ਕੋਈ CPAN ਮੌਡੀਊਲ ਇਸਤੇਮਾਲ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਉਹ ਮੌਡੀਊਲ ਐਸੇ ਚੁਣੋ ਜੋ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ ਬਰਕਰਾਰ ਹੋ:
ਜੇ CPAN ਸੋਚ-ਵਿਚਾਰ ਨਾਲ ਵਰਤਿਆ ਜਾਵੇ, ਤਾਂ ਇਹ “ਡਕਟ ਟੇਪ” ਮਨਸਕਤਾ ਦਾ ਸਭ ਤੋਂ ਵਧੀਆ ਪ੍ਰਗਟਾਵਾ ਹੈ: ਜੋ ਕੰਮ ਕਰਦਾ ਹੈ ਉਸੇ ਨੂੰ ਦੁਬਾਰਾ ਵਰਤੋ, ਅੱਗੇ ਵਧੋ, ਅਤੇ ਉਹ ਇੰਫਰਾਸਟਰੱਕਚਰ ਨਾ ਬਣਾਓ ਜੋ ਤੁਹਾਨੂੰ ਲੋੜ ਨਹੀਂ।
CGI (Common Gateway Interface) ਵੈੱਬ ਦਾ “ਸਿਰਫ ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਚਲਾਓ” ਰੁਪ ਸੀ। ਇੱਕ ਰਿਕਵੇਸਟ ਸਰਵਰ ਨੂੰ ਮਿਲੀ, ਸਰਵਰ ਤੁਹਾਡੀ Perl ਸਕ੍ਰਿਪਟ ਚਲਾਉਂਦਾ, ਤੁਹਾਡੀ ਸਕ੍ਰਿਪਟ ਇਨਪੁਟ ਪੜ੍ਹਦੀ (ਅਕਸਰ environment variables ਅਤੇ STDIN ਤੋਂ), ਅਤੇ ਫਿਰ ਇੱਕ ਪ੍ਰਤੀਕਿਰਿਆ ਪ੍ਰਿੰਟ ਕਰਦੀ—ਅਮੂਮਨ ਇਕ HTTP ਹੈਡਰ ਅਤੇ HTML ਦਾ ਇੱਕ ਬਲੌਬ।
ਸਰਲ ਰੂਪ ਵਿੱਚ, ਸਕ੍ਰਿਪਟ:
name=Sam\u0026age=42)Content-Type: text/html) ਅਤੇ ਫਿਰ HTMLਉਸ ਮਾਡਲ ਨੇ ਕਿਸੇ ਚੀਜ਼ ਨੂੰ ਤੇਜ਼ੀ ਨਾਲ ਭੇਜਣਾ ਆਸਾਨ ਕੀਤਾ। ਇਸ ਨੇ ਇੱਕੋ ਹੀ ਰੂਪ ਵਿੱਚ ਖਤਰੇ ਭੀ ਆਸਾਨ ਕਰ ਦਿੱਤੇ।
Perl CGI ਵਿਆਹ-ਨਾਲ ਭਰਪੂਰ ਆਟੋਮੇਸ਼ਨ ਲਈ ਸਿੱਧਾ ਰਾਹ ਬਣਿਆ:
ਇਹ ਅਕਸਰ ਛੋਟੀ-ਟੀਮ ਦੀ ਜਿੱਤ ਹੁੰਦੀ: ਇਕ ਸਕ੍ਰਿਪਟ, ਇਕ URL, ਤੁਰੰਤ ਮੁੱਲ।
ਕਿਉਂਕਿ CGI ਸਕ੍ਰਿਪਟ ਹਰ ਬੇਨਤੀ 'ਤੇ ਚਲਦੇ, ਛੋਟੀਆਂ ਗਲਤੀਆਂ ਕਈ ਗੁਣਾ ਵੱਧ ਜਾਂਦੀਆਂ:
ਰਫ਼ਤਾਰ ਇੱਕ ਫੀਚਰ ਹੈ, ਪਰ ਸਿਰਫ਼ ਜਦੋਂ ਉਸਦੇ ਨਾਲ ਹੱਦਾਂ ਜੁੜੀਆਂ ਹੋਣ। ਛੋਟੇ ਸਕ੍ਰਿਪਟਾਂ ਨੂੰ ਵੀ ਸਾਫ਼ ਵੈਧੀਕਰਨ, ਧਿਆਨਪੂਰਵਕ quoting, ਅਤੇ ਭਰੋਸੇਯੋਗ ਆਉਟਪੁੱਟ ਨਿਯਮ ਚਾਹੀਦੇ—ਇਹ ਆਦਤਾਂ ਅਜੇ ਵੀ ਲਾਹੇਵੰਦ ਹੁੰਦੀਆਂ ਹਨ ਭਾਵੇਂ ਤੁਸੀਂ ਇੱਕ ਛੋਟਾ ਐਡਮਿਨ ਟੂਲ ਲਿਖ ਰਹੇ ਹੋ ਜਾਂ ਅਧੁਨਿਕ ਵੈੱਬ ਏਂਡਪੌਇੰਟ।
Perl ਨੇ ਪਾਠਨਯੋਗਤਾ ਲਈ ਇੱਕ ਖ਼ਰਾਬ ਖ਼ਿਆਤੀ ਬਣਾਈ ਕਿਉਂਕਿ ਇਸ ਨੇ ਚਤੁਰ ਹੱਲਾਂ ਨੂੰ ਆਸਾਨ ਕਰ ਦਿੱਤਾ। ਘਣ punctuation-ਭਰੀ ਸੰਟੈਕਸ, ਬਹੁਤ ਸਾਰਾ ਪ੍ਰਸੰਗ-ਨਿਰਭਰ ਵਿਹਾਰ, ਅਤੇ “there’s more than one way to do it” ਦੀ ਸੱਭਿਆਚਾਰ ਨੇ ਛੋਟੇ, ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਕੋਡ ਨੂੰ ਉਤਸ਼ਾਹਿਤ ਕੀਤਾ। ਇਹ 2 ਵਜੇ ਦੀ ਤਰ੍ਹਾਂ ਇੱਕ ਤੇਜ਼ ਫਿਕਸ ਲਈ ਮਹਾਨ ਹੈ—ਪਰ ਛੇ ਮਹੀਨੇ ਬਾਅਦ, ਇੱਥੇ ਤੱਕ ਕਿ ਮੂਲ ਲੇਖਕ ਵੀ ਯਾਦ ਨਹੀਂ ਰੱਖ ਸਕਦਾ ਕਿ ਇੱਕ one-liner ਅਸਲ ਵਿੱਚ ਕੀ ਕਰ ਰਿਹਾ ਸੀ।
ਰਖ-ਰਖਾਵ ਦੀ ਸਮੱਸਿਆ ਇਹ ਨਹੀਂ ਕਿ Perl ਖ਼ਾਸ ਤੌਰ 'ਤੇ ਅਣਪੜ੍ਹਣਯੋਗ ਹੈ—ਇਹ ਹੈ ਕਿ Perl ਤੁਹਾਨੂੰ ਇਰਾਦੇ ਨੂੰ ਇਸ ਕਦਰ ਸੰਕੋਚਿਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ ਕਿ ਉਹ ਗਾਇਬ ਹੋ ਜਾਏ। ਆਮ ਦੋਸ਼ੀਆਂ ਵਿੱਚ ਸ਼ਾਮਿਲ ਹਨ: ਟਿੱਪਣੀ ਰਹਿਤ ਤੰਗ regex, implicit ਚਲਾਉਣ ਵਾਲੇ ਵੈਰੀਏਬਲ ਜਿਵੇਂ $_ ਦਾ ਭਾਰ, ਅਤੇ ਸਮਾਰਟ-ਲੱਗਣ ਵਾਲੀਆਂ ਚੀਜ਼ਾਂ (ਸਾਇਡ-ਅਫੈਕਟਸ, nested ternaries, ਮੈਜਿਕਲ ਡਿਫੌਲਟ) ਜੋ ਲਾਈਨਾਂ ਬਚਾਉਂਦੀਆਂ ਹਨ ਪਰ ਸਮਝ ਘਟਾਉਂਦੀਆਂ ਹਨ।
ਕੁਝ ਆਦਤਾਂ ਜੋ ਪਾਠਨਯੋਗਤਾ ਨੂੰ ਬਹੁਤ ਬਿਹਤਰ ਬਣਾਉਂਦੀਆਂ ਹਨ ਬਿਨਾਂ ਤੁਹਾਨੂੰ ਧੀਮਾ ਕਰਦੇ ਹੋਏ:
Perl ਦੀ ਕਮਿਉਨਿਟੀ ਆਮ ਰੂਪ ਵਿੱਚ ਸਧਾਰਨ ਗਾਰਡਰੇਲਜ਼ ਨੂੰ ਨਾਰਮਲ ਕਰਦੀ ਸੀ ਜੋ ਬਹੁਤ ਸਾਰੀਆਂ ਭਾਸ਼ਾਵਾਂ ਨੇ ਬਾਅਦ ਵਿੱਚ ਡਿਫੌਲਟ ਵਜੋਂ ਅਪਣਾਇਆ: use strict; ਅਤੇ use warnings; ਜ਼ਰੂਰੀ ਕਰੋ, ਬੁਨਿਆਦੀ ਟੈਸਟ ਲਿਖੋ (ਤੱਤਕਾਲ ਚੈੱਕਾਂ ਵੀ), ਅਤੇ ਧਾਰਨਾਵਾਂ ਨੂੰ inline ਟਿੱਪਣੀਆਂ ਜਾਂ POD ਨਾਲ ਦਸਤਾਵੇਜ਼ ਕਰੋ।
ਇਹ ਅਮਲ ਕੋਡ ਨੂੰ "ਐਨਟਰਪ੍ਰਾਈਜ਼" ਨਹੀਂ ਬਣਾਉਂਦੇ—ਇਹ ਇਸਨੂੰ ਜੀਵੰਤ ਰੱਖਣਯੋਗ ਬਣਾਉਂਦੇ ਹਨ। ਵੱਡਾ ਪਾਠ ਹਰ ਕਿਸੇ ਭਾਸ਼ਾ ਲਈ ਲਾਗੂ ਹੁੰਦਾ: ਆਪਣੇ ਭਵਿੱਖ ਦੇ ਆਪ ਅਤੇ ਟੀਮਮੈਟ ਲਈ ਲਿਖੋ। ਸਭ ਤੋਂ ਤੇਜ਼ ਸਕ੍ਰਿਪਟ ਉਹੀ ਹੈ ਜੋ ਬਦਲੇ ਜਾਣ 'ਤੇ ਸੁਰੱਖਿਅਤ ਤਰੀਕੇ ਨਾਲ ਬਦਲੀ ਜਾ ਸਕੇ।
ਟੈਕਸਟ ਦਾ ਕੰਮ ਸਾਫ਼ ਨਹੀਂ ਹੋਇਆ—ਇਹ ਸਿਰਫ਼ ਥਾਂ ਬਦਲ ਗਈ ਹੈ। ਤੁਸੀਂ ਹੋ ਸਕਦਾ ਹੈ CGI ਸਕ੍ਰਿਪਟਾਂ ਨੂੰ ਮੇਨਟੇਨ ਨਾ ਕਰ ਰਹੇ ਹੋ, ਪਰ ਤੁਸੀਂ ਫਿਰ ਵੀ CSV ਐਕਸਪੋਰਟ, SaaS webhook, ਲਾਗ ਫਾਇਲਾਂ, ਅਤੇ "ਅਸਥਾਈ" ਇੰਟਿਗਰੇਸ਼ਨ ਫੀਡਾਂ ਨਾਲ ਜ਼ੋਰ ਦੇ ਰਹੇ ਹੋ ਜੋ ਸਥਾਈ ਬਣ ਜਾਂਦੀਆਂ ਹਨ। ਉਹੀ ਪ੍ਰਯੋਗਕ ਹੁਨਰ ਜੋ Perl ਨੂੰ ਲਾਭਦਾਇਕ ਬਣਾਉਂਦੇ ਸਨ, ਅਜੇ ਵੀ ਸਮਾਂ ਬਚਾਉਂਦੇ ਹਨ (ਅਤੇ ਖਾਮੋਸ਼ ਡੇਟਾ ਵਿਗੜਣ ਤੋਂ ਰੋਕਦੇ ਹਨ)।
ਅਧਿਕਤਰ ਸਮੱਸਿਆਵਾਂ “ਕਠਿਨ ਪਾਰਸਿੰਗ” ਨਹੀਂ ਹੁੰਦੀਆਂ—ਉਹ ਅਸਮਰਥ ਇਨਪੁਟ ਹੁੰਦੀਆਂ ਹਨ:
1,234 vs 1.234, ਤਾਰੀਖਾਂ ਜਿਵੇਂ 03/04/05, ਮਹੀਨੇ ਦੇ ਨਾਮ ਵੱਖ-ਵੱਖ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ।ਹਰ ਇਨਪੁਟ ਨੂੰ ਬਿਨਾਂ ਭਰੋਸੇ ਦੇ ਦਿਖੋ, ਭਾਵੇਂ ਇਹ “ਸਾਡੇ ਸਿਸਟਮ” ਤੋਂ ਆ ਰਿਹਾ ਹੋਵੇ। ਸ਼ੁਰੂ ਵਿੱਚ ਸਧਾਰਨ ਕਰੋ: ਇੱਕ ਐਨਕੋਡਿੰਗ ਪਸੰਦ ਕਰੋ (ਅਮੂਮਨ UTF-8), ਨਿਊਲਾਈਨ ਸਧਾਰਨ ਕਰੋ, ਵਾਜਿਬ ਸ਼ੋਰ ਨੂੰ ਟ੍ਰਿਮ ਕਰੋ, ਅਤੇ ਇੱਕ ਇਕਸਾਰ ਸਕੀਮਾ ਵਿੱਚ ਬਦਲੋ।
ਫਿਰ ਧਾਰਨਾਵਾਂ ਨੂੰ ਖੁੱਲ੍ਹ ਕੇ ਵੈਧ ਕਰੋ: “ਇਸ ਫਾਇਲ ਵਿੱਚ 7 ਕਾਲਮ ਹਨ,” “IDs ਨੰਬਰ ਹਨ,” “ਟਾਈਮਸਟੈਂਪ ISO-8601 ਹਨ।” ਜਦ ਕੁਝ ਟੁਟੇ, ਤੇਜ਼ੀ ਨਾਲ ਫੇਲ ਹੋਵੋ ਅਤੇ ਜੋ ਤੁਸੀਂ ਵੇਖਿਆ ਉਸਦਾ ਰਿਕਾਰਡ ਰੱਖੋ (ਨਮੂਨਾ ਲਾਈਨ, ਰੋਅ ਨੰਬਰ, ਸਰੋਤ ਫਾਇਲ)।
ਜਦ ਸੰਭਵ ਹੋ, ਸਪਸ਼ਟ ਫਾਰਮੈਟ ਅਤੇ ਅਸਲੀ ਪਾਰਸਰ ਪਸੰਦ ਕਰੋ ਬਜਾਏ ਚਤੁਰ ਸਪਲਿਟਿੰਗ ਦੇ। ਜੇ ਤੁਹਾਨੂੰ JSON ਮਿਲਿਆ ਹੈ, ਤਾਂ JSON ਪਾਰਸ ਕਰੋ। ਜੇ ਤੁਹਾਨੂੰ CSV ਮਿਲਿਆ ਹੈ, ਤਾਂ ਇੱਕ CSV ਪਾਰਸਰ ਵਰਤੋ ਜੋ ਕੋਟਿੰਗ ਨੂੰ ਸਮਝਦਾ ਹੋਵੇ। ਅਨੁਮਾਨ ਅਜੇ ਤਕ ਚੱਲਦਾ ਹੈ ਜਦ ਤੱਕ ਕਿਸੇ ਗਾਹਕ ਦੇ ਨਾਮ ਵਿੱਚ ਇੱਕ ਕਾਮਾ ਨਤੀਜੇ ਚੁਪਚਾਪ ਖ਼ਰਾਬ ਨਾ ਕਰ ਦੇਵੇ।
ਇਹ ਹੁਨਰ ਅੱਜ ਦੇ ਰੋਜ਼ਮਰਾ ਕੰਮਾਂ ਵਿੱਚ ਵੀ ਲਾਹੇਵੰਦ ਹਨ: ਇਨਸੀਡੈਂਟ ਦੌਰਾਨ ਐਪਲੀਕੇਸ਼ਨ ਲਾਗ ਪਰਸ਼ ਕਰਨ, ਫਾਇਨੈਂਸ ਐਕਸਪੋਰਟ ਸਾਫ਼ ਕਰਨ, CRM ਇਮਪੋਰਟ ਤਬਦੀਲ ਕਰਨ, API ਇੰਟਿਗਰੇਸ਼ਨ ਬ੍ਰਿਜ਼ ਕਰਨ, ਅਤੇ ਇੱਕ-ਵਾਰੀ ਡੇਟਾ ਮਾਈਗ੍ਰੇਸ਼ਨ ਕਰਨਾ ਜਿੱਥੇ “ਲਗਭਗ ਸਹੀ” ਵੀ ਗਲਤ ਹੁੰਦਾ ਹੈ।
Perl ਦੀ “ਡਕਟ ਟੇਪ” ਸاکਸ਼ੀਓਂ ਇਸ ਗੱਲ ਬਾਰੇ ਨਹੀਂ ਸੀ ਕਿ ਇਹ ਅਾਲੋਚਨਾਤਮਕ ਹੈ—ਇਹ ਇਸ ਗੱਲ ਦੀ ਸੀ ਕਿ ਇਹ ਲਾਭਦਾਇਕ ਸੀ। ਇਹ ਵਿਰਾਸਤ ਹਰ ਵਾਰੀ ਸਪੱਸ਼ਟ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਕਿਸੇ ਟੀਮ ਨੂੰ ਇੱਕ ਛੋਟੇ ਸਕ੍ਰਿਪਟ ਦੀ ਲੋੜ ਹੋਵੇ ਤਾ ਕਿ ਐਕਸਪੋਰਟਾਂ ਨੂੰ ਮਿਲਾਇਆ ਜਾ ਸਕੇ, ਲਾਗ ਸਧਾਰੇ ਜਾਣ, ਜਾਂ ਅਧ-ਸੰਰਚਿਤ ਟੈਕਸਟ ਦਾ ਢੇਰ ਕਿਸੇ ਸਪਰੇਡਸ਼ੀਟ ਜਾਂ ਡੇਟਾਬੇਸ ਵਿੱਚ ਪਸੰਦਯੋਗ ਬਣ ਸਕੇ।
ਆਧੁਨਿਕ ਸਕ੍ਰਿਪਟਿੰਗ ਆਮ ਤੌਰ 'ਤੇ Python, Ruby, ਜਾਂ JavaScript (Node.js) ਦੀ ओर ਝੁਕਦੀ ਹੈ। ਉਹਨਾਂ ਦੀਆਂ ਉਚ-ਸਤਰ ਦੀਆਂ ਭੂਮਿਕਾਵਾਂ ਓਵਰਲੈਪ ਕਰਦੀਆਂ ਹਨ: ਤੇਜ਼ ਆਟੋਮੇਸ਼ਨ, ਹੋਰ ਸਿਸਟਮਾਂ ਨਾਲ ਇੰਟੀਗਰੇਸ਼ਨ, ਅਤੇ ਟੂਲਾਂ ਦਰਮਿਆਨ glue ਕੋਡ।
Perl ਦੀਆਂ ਕਲਾਸਿਕ ਤਾਕਤਾਂ (ਅਜੇ ਵੀ ਹਨ) ਸੀ ਓਐਸ ਤੱਕ ਸੀਧੀ ਪਹੁੰਚ, ਅਭਿਵਕਤੀਮੁਖ ਟੈਕਸਟ ਮੈਨਿਪੂਲੇਸ਼ਨ, ਅਤੇ “ਕੰਮ ਸਿਰਫ਼ ਕਰੋ” ਦੀ ਸਭਿਆਚਾਰ। Python ਅਕਸਰ ਪਾਠਨਯੋਗਤਾ ਅਤੇ ਵਿਆਪਕ standaard ਲਾਇਬ੍ਰੇਰੀ ਉੱਤੇ ਜ਼ੋਰ ਦਿੰਦਾ; Ruby ਡਿਵੈਲਪਰ ਅਨੁਕੂਲਤਾ ਅਤੇ ਵੈੱਬ-ਕੇਂਦਰਤ ਰਿਵਾਜਾਂ ਵਿੱਚ ਚਮਕਦਾ; JavaScript ਹਰ ਜਗ੍ਹਾ deploy ਕਰਨ ਦੀ ਸੁਵਿਧਾ ਅਤੇ Node ਦੀ ਵਰਤੋਂ ਨਾਲ ਯੂਬਿਕੁਟੀਅਸ ਹੈ।
ਅੱਜ ਦਾ ਕੰਮ ਬਹੁਤ ਸਾਰਾ ਫ੍ਰੇਮਵਰਕ, ਸਥਿਰ APIs, ਕਲਾਊਡ ਸਰਵਿਸ ਅਤੇ ਬਿਹਤਰ ਟੂਲਿੰਗ ਨਾਲ ਆਕਾਰ ਲੈਂਦਾ ਹੈ। ਉਹ ਕੰਮ ਜੋ ਪਹਿਲਾਂ ਕਸਟਮ ਸਕ੍ਰਿਪਟਾਂ ਦੀ ਲੋੜ ਹੁੰਦੇ ਸਨ, ਹੁਣ ਮੈਨੇਜਡ ਸਰਵਿਸਾਂ, ਹੋਸਟ ਕੀਤੇ ਕਨੈਕਟਰ ਅਤੇ ਆਫ-ਥ-ਸ਼ੈਲਫ ਸਾਧਨਾਂ ਨਾਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
ਡਿਪਲੋਇਮੈਂਟ ਵੀ ਵੱਖਰਾ ਹੋ ਗਿਆ: ਕੰਟੇਨਰ, CI ਪਾਈਪਲਾਈਨ, ਅਤੇ ਡਿਪੈਂਡੈਂਸੀ ਪਿਨਿੰਗ ਹੁਣ ਉਮੀਦ ਕੀਤੀਆਂ ਜ਼ਰੂਰਤਾਂ ਹਨ, ਨਾਂ ਕਿ ਵਿਕਲਪ।
ਅਸਲੀ ਦੁਨੀਆਂ ਦਾ ਟੈਕਸਟ ਅਜੇ ਵੀ ਗੰਦਾ ਹੈ। ਲਾਗਾਂ ਵਿੱਚ ਹੈਰਾਨੀ ਹੋਣ, ਐਕਸਪੋਰਟਾਂ ਵਿੱਚ “ਕ੍ਰੀਏਟਿਵ” ਫਾਰਮੈਟਿੰਗ, ਅਤੇ ਡੇਟਾ ਨੂੰ ਭਰੋਸੇਯੋਗ ਬਣਾਉਣ ਲਈ ਧਿਆਨ ਭਾਲੀ ਤਬਦੀਲੀਆਂ ਦੀ ਲੋੜ ਅਜੇ ਵੀ ਹੈ।
Perl ਨੇ ਜੋ ਸਿੱਖਾਇਆ ਉਹ ਇਹ ਹੈ: ਆਟੋਮੇਸ਼ਨ ਦਾ 80% ਗੰਦਾ ਕੰਮ parsing, cleaning, validating, ਅਤੇ ਭਰੋਸੇਯੋਗ ਆਉਟਪੁੱਟ ਤਿਆਰ ਕਰਨਾ ਹੈ—ਇਹ ਅਜੇ ਵੀ ਸਤਤ ਹੈ।
ਸਭ ਤੋਂ ਵਧੀਆ ਚੋਣ ਆਮ ਤੌਰ 'ਤੇ ਉਹ ਹੁੰਦੀ ਹੈ ਜੋ ਤੁਹਾਡੀ ਟੀਮ ਰੱਖ ਸਕੇ: ਭਾਸ਼ਾ ਨਾਲ ਆਰਾਮਦਾਇਕਤਾ, ਟਾਸਕ ਲਈ ਇਕੋਸਿਸਟਮ ਦੀ ਸਿਹਤ, ਅਤੇ ਹਕੀਕਤੀ ਡਿਪਲੋਯਮੈਂਟ ਪਾਬੰਦੀਆਂ (ਕੀ ਇੰਸਟਾਲ ਹੈ, ਸੁਰੱਖਿਆ ਕੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ, ਓਪਸ ਕੀ ਸਹਿਯੋਗ ਦੇ ਸਕਦੇ ਹਨ)।
Perl ਦੀ ਵਿਰਾਸਤ ਇਹ ਨਹੀਂ ਕਿ “ਸਦਾ Perl ਵਰਤੋ”—ਇਹ ਹੈ: “ਉਹ ਟੂਲ ਚੁਣੋ ਜੋ ਉਸ ਗੰਦਗੀ ਲਈ ਫਿੱਟ ਕਰਦਾ ਹੈ ਜੋ ਤੁਹਾਡੇ ਕੋਲ ਹਕੀਕਤ ਵਿੱਚ ਹੈ।”
ਇਹ ਵੀ ਧਿਆਨਯੋਗ ਹੈ ਕਿ “ਡਕਟ ਟੇਪ” ਮਨਸਕਤਾ ਆਧੁਨਿਕ AI-ਸਹਾਇਤ ਵਰਕਫਲੋਜ਼ ਵਿੱਚ ਵੀ ਨਜਰ ਆ ਰਹੀ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਇੱਕ vibe-coding ਪਲੇਟਫਾਰਮ ਜਿਵੇਂ Koder.ai ਉਪਯੋਗੀ ਹੋ ਸਕਦਾ ਹੈ ਜਦ ਤੁਹਾਨੂੰ ਇੱਕ ਛੋਟਾ ਅੰਦਰੂਨੀ ਟੂਲ (ਘਰਿੱਚ ਲਾਗ ਦਰਸ਼ਕ, CSV ਨਾਰਮਲਾਈਜ਼ਰ, ਜਾਂ ਛੋਟੀ ਐਡਮਿਨ UI) ਦੀ ਲੋੜ ਹੋਵੇ ਅਤੇ ਤੁਸੀਂ ਚੈਟ ਰਾਹੀਂ ਇਟਰੇਟ ਕਰਨਾ ਚਾਹੋ—ਹਰ ਵਰਤੋਂ ਲਈ ਸਤਿਕਾਰਯੋਗ ਸਾਵਧਾਨੀ ਲਾਗੂ ਕਰੋ: ਤੇਜ਼ੀ ਨਾਲ ਭੇਜੋ, ਪਰ ਨਤੀਜੇ ਨੂੰ ਪਾਠਨਯੋਗ, ਟੈਸਟਯੋਗ ਅਤੇ ਵਾਪਸੀਯੋਗ ਰੱਖੋ ਜੇ ਅੱਜ ਦਾ “ਅਸਥਾਈ” ਫਿਕਸ ਕੱਲ੍ਹ ਦਾ ਅਹੰਕਾਰ ਬਣ ਜਾਏ।
Perl ਦਾ ਸਭ ਤੋਂ ਵੱਡਾ ਤੋਹਫ਼ਾ ਕਿਸੇ ਖਾਸ ਸੰਟੈਕਸ ਨਹੀਂ ਹੈ—ਇਹ ਗੰਦਗੀ ਵਾਲੀਆਂ ਟੈਕਸਟ ਸਮੱਸਿਆਵਾਂ ਨਾਲ ਕੰਮ ਕਰਨ ਦੀ ਇੱਕ ਕਾਰਯਕ ਰਵੱਈਆ ਹੈ। ਜਦ ਤੁਸੀਂ ਕਿਸੇ ਚੀਜ਼ ਨੂੰ ਆਟੋਮੇਟ ਕਰਨ ਵਾਲੇ ਹੋ (ਇੱਕ ਨਾਂ-ਬਦਲਣ ਦਾ ਕੰਮ, ਲਾਗ ਕੁਲੀਨਅੱਪ, ਡੇਟਾ ਇੰਪੋਰਟ), ਤਾਂ ਇਸ “ਡਕਟ ਟੇਪ” ਚੈੱਕਲਿਸਟ ਨੂੰ ਵਰਤੋਂ ਤਾਂ ਜੋ ਤੁਸੀਂ ਪ੍ਰਯੋਗਕ ਰਹੋ ਬਿਨਾਂ ਭਵਿੱਖ ਵਿੱਚ ਦਿੱਕਤ ਬਣਾਏ।
ਛੋਟੇ ਤੋਂ ਸ਼ੁਰੂ ਕਰੋ:
^ / $), ਗਰੂਪ, ਕਰੈਕਟਰ ਕਲਾਸ, ਅਤੇ “greedy vs. non-greedy” ਮੈਚਿੰਗ।ਸ਼ਾਮਿਲ ਕਰੋ: ਇਨਪੁਟ, ਆਉਟਪੁੱਟ, ਕੁਝ ਪਹਿਲਾਂ/ਬਾਅਦ ਉਦਾਹਰਣ, ਧਾਰਨਾਵਾਂ (ਐਨਕੋਡਿੰਗ, ਸਪਲਿਟਰ), ਅਤੇ ਇੱਕ ਰੋਲਬੈਕ ਯੋਜਨਾ (“ਬੈਕਅਪ X ਤੋਂ ਰੀਸਟੋਰ ਕਰੋ” ਜਾਂ “ਪਿਛਲੇ ਵਰਜ਼ਨ ਨਾਲ ਦੁਬਾਰਾ ਚਲਾਓ”)।
Perl ਇਤਿਹਾਸਕ ਰੂਪ ਵਿੱਚ ਵੈੱਬ-ਯੁੱਗ ਦੇ ਟੈਕਸਟ ਕੰਮ ਦਾ ਇੱਕ ਮੁਨਾਰ ਹੈ ਅਤੇ ਅਜੇ ਵੀ ਸਿਖਾਉਂਦਾ ਹੈ: ਪ੍ਰਯੋਗਕ ਹੋਵੋ, ਸਾਵਧਾਨ ਰਹੋ, ਅਤੇ ਇੱਕ ਐਸੀ ਸਕ੍ਰਿਪਟ ਛੱਡੋ ਜਿਸ 'ਤੇ ਦੂਜਾ ਮਨੁੱਖ ਭਰੋਸਾ ਕਰ ਸਕੇ।
ਇਹ ਇੱਕ ਵਿਹਾਰਿਕ ਰਵੱਈਆ ਹੈ: ਉਹ ਸਭ ਤੋਂ ਛੋਟਾ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਬਦਲਾਅ ਵਰਤੋ ਜੋ ਅਸਲੀ ਦਰਦ ਨੂੰ ਤੇਜ਼ੀ ਨਾਲ حل ਕਰੇ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਇਨਪੁਟ ਗੰਦੇ ਹੋਣ ਅਤੇ ਨਿਰਦੇਸ਼ ਅਧੂਰੇ ਹੋਣ।
ਇਹ ਲਿਖਤਮਸ਼ੀਨ ਹੋਣ ਦੀ ਛੂਟ ਨਹੀਂ ਦਿੰਦਾ। “ਡਕਟ ਟੇਪ” ਹਿੱਸਾ ਇਸ ਗੱਲ ਦਾ ਹੈ ਕਿ ਕੰਮ ਚੱਲਦਾ ਹੋਵੇ, ਫਿਰ ਕਾਫ਼ੀ ਸੁਰੱਖਿਆ (ਟੈਸਟ, ਬੈਕਅਪ, ਨੋਟ) ਸ਼ਾਮਿਲ ਕਰੋ ਤਾਂ ਜੋ ਇਹ ਫਿਕਸ ਬਾਅਦ ਵਿੱਚ ਜਾਲ ਨਾ ਬਣ ਜਾਵੇ।
“ਇੱਕ ਹੋਰ ਵਾਰੀ” ਨਿਯਮ ਵਰਤੋਂ: ਜੇ ਤੁਸੀਂ ਇੱਕੋ ਹੀ ਹੱਥੋਂ-ਹੱਥ ਸੁੱਧਾਈ ਦੋ ਵਾਰ ਕਰਦੇ ਹੋ, ਤਾਂ ਇਸਨੂੰ ਆਟੋਮੇਟ ਕਰੋ।
ਚੰਗੇ ਉਮੀਦਵਾਰ ਹਨ:
ਜੇ ਕੰਮ پروਡਕਸ਼ਨ ਡੇਟਾ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦਾ ਹੈ, ਤਾਂ ਕਾਰਜ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਗਾਰਡਰੇਲ (ਡ੍ਰਾਈ-ਰਨ, ਬੈਕਅਪ, ਵੈਧੀਕਰਨ) ਸ਼ਾਮਿਲ ਕਰੋ।
ਇੱਕ-ਲਾਈਨਰ ਨੂੰ ਛੋਟੇ ਸਕ੍ਰਿਪਟਾਂ ਵਾਂਗ ਵਰਤੋਂ:
ਜੇ ਇਹ ਲੰਬਾ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਰੁੱਟੀ ਸੰਭਾਲ ਦੀ ਲੋੜ ਹੋਵੇ ਜਾਂ ਦੁਬਾਰਾ ਵਰਤਿਆ ਜਾਵੇ, ਤਾਂ ਇਸਨੂੰ ਵਾਸਤੇ ਇੱਕ ਸਪਸ਼ਟ ਸਕ੍ਰਿਪਟ ਬਣਾਓ ਜਿਸ ਵਿੱਚ ਆਰਗੁਮੈਂਟ ਅਤੇ ਇਨਪੁੱਟ/ਆਉਟਪੁੱਟ ਰਾਹ ਹੋਣ।
Regex ਉਦੋਂ ਸਭ ਤੋਂ ਵਧੀਆ ਹੈ ਜਦ ਟੈਕਸਟ “ਲਗਭਗ ਸੰਰਚਿਤ” ਹੋਵੇ (ਲਾਗ, ਈਮੇਲ, ID, ਅਸਥਿਰ ਸਪਲਿਟਰ) ਅਤੇ ਤੁਹਾਨੂੰ ਵੈਧੀਕਰਨ, ਖਿੱਚੋ, ਜਾਂ ਦੁਬਾਰਾ ਲਿਖਣਾ ਹੋਵੇ।
ਪਠਨਯੋਗ ਬਣਾਈ ਰੱਖਣ ਲਈ:
ਇੱਕ ਤੁਰੰਤ ਫਿਕਸ “ਹਮੇਸ਼ਾ ਲਈ” ਤਦ ਬਣ ਜਾਂਦਾ ਹੈ ਜਦ ਇਹ ਅਕਸਰ ਵਰਤਿਆ ਜਾਵੇ, ਹੋਰਾਂ ਵੱਲੋਂ ਨਿਰਭਰ ਹੋਵੇ, ਜਾਂ ਵਰਕਫਲੋ ਵਿੱਚ ਜੁੜ ਜਾਵੇ (cron, ਪਾਈਪਲਾਈਨ, ਡੌਕਸ)।
ਜਦ ਸਮਾਂ ਆਵੇ ਤਾਂ ਇਸਨੂੰ ਮਜ਼ਬੂਤ ਬਣਾਉ:
ਇਹ ਪ੍ਰਕਿਰਿਆ ਉਹ ਵੇਲੇ ਲਾਹੇਵੰਦ ਹੁੰਦੀ ਹੈ ਜਦ ਲੋਕ ਨਵੇਂ ਫੀਚਰ ਦੀ ਮੰਗ ਕਰਨ, ਫਾਰਮੈਟ ਖਿਸਕਦੇ ਰਹਿਣ, ਜਾਂ ਫੇਲਿਯਰ ਮਹਿੰਗਾ ਹੋਵੇ।
CPAN ਸਮਾਂ ਬਚਾ ਸਕਦਾ ਹੈ, ਪਰ ਹਰ ਡਿਪੇਂਡੈਂਸੀ ਇੱਕ ਵਚਨਬੱਧਤਾ ਹੈ。
ਪ੍ਰਯੋਗਯੋਗ ਚੋਣ ਚੈਕਲਿਸਟ:
ਤਿਆਰੀ ਵਿੱਚ, ਵਰਜਨ ਪਿਨ ਕਰੋ, ਇੰਸਟਾਲ ਸਟੈਪ ਦਸਤਾਵੇਜ਼ ਬਣਾਓ, ਅਤੇ ਸੁਰੱਖਿਆ ਅੱਪਡੇਟ ਟਰੈਕ ਕਰੋ।
CGI-ਕਾਲ ਦਾ ਸਭ ਤੋਂ ਵੱਡਾ ਸਬਕ: ਬਿਨਾਂ ਹੱਦਾਂ ਦੇ ਤੇਜ਼ੀ ਮੁਆਫ਼ੀ ਖ਼ਤਰੇ ਪੈਦਾ ਕਰਦੀ ਹੈ。
ਜੇ ਤੁਸੀਂ ਯੂਜ਼ਰ ਜਾਂ ਹੋਰ ਸਿਸਟਮ ਤੋਂ ਇਨਪੁਟ ਲੈਂਦੇ ਹੋ ਤਾਂ:
ਇਹ ਆਦਤਾਂ ਆਧੁਨਿਕ ਸਕ੍ਰਿਪਟਾਂ, ਸਰਵਰਲੈੱਸ ਫੰਕਸ਼ਨਾਂ ਅਤੇ ਵੈੱਬ ਏਂਡਪਾਏਂਟਸ 'ਤੇ ਵੀ ਲਾਗੂ ਹੁੰਦੀਆਂ ਹਨ।
ਆਮ ਪਿੱਟਫ਼ਾਲ ਵਿੱਚ ਸ਼ਾਮਿਲ ਹਨ:
ਜਲਦੀ ਸਧਾਰਨ ਕਰੋ (ਐਨਕੋਡਿੰਗ, ਨਿਊਲਾਈਨ), ਧਾਰਨਾਵਾਂ ਵੈਧ ਕਰੋ (ਕਾਲਮ ਗਿਣਤੀ, ਜ਼ਰੂਰੀ ਫੀਲਡ), ਅਤੇ ਗਲਤੀ ਹੋਣ 'ਤੇ offending ਪੰਗਤੀ/ਕਤਾਰ ਦਾ ਨਮੂਨਾ ਦਿੱਤੋ।
ਿਨਯਮ ਸਿਰਲੇਖ: ਜੇ ਇਹ ਅਸਲ ਫਾਰਮੈਟ ਹੈ ਤਾਂ ਅਸਲੀ ਪਾਰਸਰ ਵਰਤੋਂ。
Regex ਅਤੇ ਅਡ-ਹੌਕ ਸਪਲਿਟਿੰਗ ਪੈਟਰਨ ਖੋਜ ਅਤੇ ਹਲਕੇ-ਫੁਲਕੇ ਕਲੀਨਅੱਪ ਲਈ ਚੰਗੇ ਹਨ—ਜਦ ਤੱਕ ਕੋਈ ਐਜ-ਕੇਸ (ਜਿਵੇਂ ਨਾਮ ਵਿੱਚ ਕੌਮਾ) ਨਤੀਜਿਆਂ ਨੂੰ ਸ਼ਾਂਤ ਢੰਗ ਨਾਲ ਖ਼ਰਾਬ ਨਾ ਕਰ ਦੇਵੇ।
ਉਹ ਟੂਲ ਚੁਣੋ ਜੋ ਤੁਹਾਡੀ ਟੀਮ ਚਲਾ ਅਤੇ ਸੰਭਾਲ ਸਕੇ:
Perl ਦੀ ਵਿਰਾਸਤ ਇੱਥੇ ਇਹ ਨਹੀਂ ਕਿ “ਹਮੇਸ਼ਾ Perl ਵਰਤੋ” — ਇਹ ਹੈ: "ਉਹ ਟੂਲ ਚੁਣੋ ਜੋ ਉਸ ਗੰਦਗੀ ਲਈ ਅਨੁਕੂਲ ਹੋ ਜੋ ਤੁਹਾਡੇ ਕੋਲ ਹੋਈ ਹੈ।"