Untitled

개요

오늘 포스팅에서는 히어닥(heredoc) 구문에 대해서 알아보려고 합니다. 개발하면서 일상적으로 좀 더 깔끔하게 작성하기 위해 많이 사용하던 편이었는데 이런 구문을 히어닥(heredoc)이라고 부른다는 것을 최근에 알아서 정리를 해보려고합니다.

히어닥(heredoc) 이란

히어닥(Heredoc) 구문은 여러 프로그래밍 언어에서 사용되는, 긴 문자열을 편리하게 다루기 위한 구문입니다. 이 구문을 사용하면 여러 줄에 걸친 문자열을 코드 내에 직접 삽입할 수 있으며, 이 때 문자열 내의 줄바꿈이나 들여쓰기가 그대로 유지됩니다.

히어닥(heredoc) 구문의 장점

  1. 가독성 향상: 여러 줄에 걸친 문자열을 코드 내에 직접 삽입할 수 있어 가독성이 좋아집니다.
  2. 유지 보수 용이: 문자열 내용을 수정할 때, 일반적인 문자열 연결 방식보다 훨씬 쉽게 수정할 수 있습니다.
  3. 특수 문자 처리: 이스케이프 문자를 사용하지 않고도 문자열 내에 따옴표를 자유롭게 사용할 수 있습니다.

언어별 히어닥(heredoc) 처리

언어별로 히어닥 구문을 지원하지는 않지만 비슷하게 다중 문자열을 표시할 수 있는 방법들이 있습니다.

PHP

PHP에서는 <<< 후에 식별자를 사용하여 히어닥 구문을 시작합니다. 식별자는 다시 문자열의 끝에서 반복되어야 합니다.

1<?php
2$text = <<<EOT
3여기는 여러 줄에 걸친
4문자열입니다.
5특수 문자를 '그대로' 출력할 수 있습니다.
6EOT;
7
8echo $text;
9?>

Ruby

1text = <<-HEREDOC
2여기는 여러 줄에 걸친
3문자열입니다.
4'특수 문자' 그대로 출력됩니다.
5HEREDOC
6
7puts text

Python

Python에서는 히어닥과 동일한 기능을 하는 구문으로 삼중 따옴표(""" 또는 ''')를 사용하여 여러 줄에 걸친 문자열을 처리합니다.

1text = """여기는 여러 줄에 걸친
2문자열입니다.
3'특수 문자'도 그대로 출력됩니다."""
4print(text)

Bash (Shell Script)

Bash에서는 << 연산자를 사용하여 히어닥 구문을 구현합니다. 이를 통해 스크립트 내에서 다중 라인 문자열을 쉽게 다룰 수 있습니다.

1cat <<'EOF'
2여기는 여러 줄에 걸친
3문자열입니다.
4'특수 문자'도 그대로 출력됩니다.
5EOF

Golang

Go 언어에는 히어닥 구문과 직접적으로 동일한 것은 없지만, 백틱(`)을 사용해 다중 라인 문자열을 표현할 수 있습니다.

 1package main
 2
 3import "fmt"
 4
 5func main() {
 6    str := `여기는
 7여러 줄에 걸친
 8문자열입니다.`
 9    fmt.Println(str)
10}

Java

Java에서는 히어닥(Heredoc) 구문이 직접적으로 존재하지 않습니다. Java 13부터는 Text Blocks를 사용해 비슷한 기능을 구현할 수 있습니다.

1String str = """
2             여기는
3             여러 줄에 걸친
4             문자열입니다.
5             """;
6System.out.println(str);

Javascript

히어닥(Heredoc) 구문이라는 명칭을 직접적으로 사용하지 않지만, ES6(ECMAScript 2015)부터 도입된 템플릿 리터럴(template literals)을 사용하여 비슷한 기능을 구현할 수 있습니다. 템플릿 리터럴은 백틱(`)을 사용하여 문자열을 표현하며, 이를 통해 여러 줄에 걸친 문자열을 쉽게 작성할 수 있습니다

1const multiLineString = `여기는
2여러 줄에 걸친
3문자열입니다.`;
4
5console.log(multiLineString);

정리

히어닥(Heredoc) 구문은 다양한 프로그래밍 언어에서 긴 문자열이나 복잡한 문자열을 다루기 위해 제공되는 유용한 기능입니다. 이 구문을 활용하면 코드 내에서 여러 줄에 걸친 문자열을 편리하게 표현할 수 있으며, 특수 문자나 인용 부호를 추가적인 이스케이프 없이 직접 사용할 수 있습니다. 이는 코드의 가독성을 크게 향상시키고, 문자열 관련 작업을 더욱 효율적으로 만들어 줍니다.

히어닥 구문은 PHP, Ruby, Python, Bash 등 다양한 언어에서 각기 다른 형태로 구현되어 있으나, 기본적인 목적과 사용 방법은 유사합니다. 각 언어의 문법과 특성에 맞춰 적절히 사용한면 좋을 것 같습니다.